UNIX/Soft/SubVersion
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-CVSの後継。徐々にCVSを置き換えていてオープンソースプロダ...
#contents
*特徴 [#o6d0e7f1]
-CVSと違いファイルの移動やリネームしても履歴は継続される
-複数ファイルのcommitを1つのコミットとして扱える(グルー...
-賛否両論あろうが排他制御ができるようになった(昔は取り入...
*よく使うコマンド [#f2c7a102]
**属性の確認と設定 [#mdf4f206]
svn proplist ファイル名
svn propset svn:exacutable true ファイル名
**svnからとってくる [#gdc26fc9]
-深さを指定しないと全部とってくる
svn co リポジトリへのパス--depth=immediates or infinity
-リビジョンを指定するなら -rを使う
svn checkout -r 2 リポジトリへのパス
-リポジトリパスはhttpなら通常のURLと一緒。
-ローカルのリポジトリから取得
svn checkout file:///home/svn/repos/
**今のリポジトリ状態をチェック [#a7e3d1a6]
svn st
追加や修正のあったファイルの状態を表示できる。
**リポジトリを最新化 [#x96c837b]
-更新したいディレクトリに移動
svn up
**リポジトリを特定のリビジョンに戻す [#ce11a6ba]
svn logしてバージョンを特定し
svn up -r XXX
**コミット [#b99c50e5]
svn commit もしくは svn ci
**変更の取り消し [#n9c202b8]
svn revert
-コミットしてしまった場合はマージすることになる。
merge --depth=infinity -r取り消したいリビジョン番号:左よ...
**ログを見る [#t06435ff]
svn log --revision リビジョン番号 リポジトリURL
-そのリビジョンでコミットされたファイルを取得
svn log -r リビジョン番号 -v
**ファイルに保存された認証情報を消す [#s6404960]
rm -rf ~/.subversion/auth/svn.simple/*
*他のプロジェクトのソースを参照する(externals) [#oeb36b1b]
シンボリックリンクのようなもの。メインは別のリポジトリで...
**TortoiseSVN設定 [#i40061f7]
属性の設定を選んで、属性名はsvn:externalsを選ぶ。
設定値はファイル単位で記述、絶対パスでも可能
../../../../../../../404.html 404.html
../../../../../../../500.html 500.html
*マージ [#w80853f4]
よく混乱してしまうのがマージである。基本的にブランチで枝...
**マージの方法 [#l23f6ac4]
+マージ先のプロジェクトをチェックアウト(マージ元はリポジ...
+マージしたい変更のリビジョンのみを指定して、マージ実行
+変更点を確認するのと、merge-infoプロパティに指定したリビ...
-リビジョン指定してコミット
cd マージされる側のワーキングコピー
svn merge -c 305212,305357,305716,305867,305962,306151,3...
*TIPS [#q7155123]
**サーバー移転 [#m577bfd9]
サーバの情報が記述されているメタ情報(.svn)を書き換える必...
svn switch --relocate
**ブランチ切り替え [#g22f1634]
svn switch 新URL
**ローカルチェックアウトディレクトリ移転 [#m61b6617]
これはトップレベルフォルダを移動するだけで良い。一旦チェ...
**リビジョン間の差分をチェック [#w614f97d]
***リポジトリ同士の比較 [#v07ba01f]
-リポジトリ1のリビジョン1000とリポジトリ2のheadを比較する
svn diff リポジトリ1URL@1000 リポジトリ2URL@head
-とあるリポジトリのリビジョン間(1000-2000)の差分を表示
svn -r 1000:2000 リポジトリ1URL
最後に--summarizeをつけるとファイルの出力のみとなる
***チェックアウトディレクトリとリポジトリの差分をチェック...
-ワーキングディレクトリーに移動して以下のコマンドを実施
svn diff -r77771:head [ワーキングディレクトリ名]
移動しない場合は引数で指定可能
***共通ファイル名だけを抽出する [#fc8d660f]
--summarizeオプションを付けるとファイル名のみ出力
svn diff -r77771:head --summarize [ワーキングディレクト...
*設定など [#i05d8d47]
**Apacheと連携して使う [#t198c7ea]
-CentOS5.4で検証。まずはsvnモジュールのインストール
yum install mod_dav_svn.
-次にhttpd.confの設定
-IPアドレス制限とBASIC認証をかけている
<Location /mysvn>
DAV svn
SVNParentPath "/home/svn"
SVNListParentPath on
deny from all
allow from xxx.xxx.xxx.xxx
AuthType Basic
AuthName "Rutake Repository"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Location>
-リポジトリの以下のディレクトリに書き込み権限を与えておく...
mkdir /home/svn/repos
svnadmin create /home/svn/repos
chown -R apache:apache /home/svn/repos
**認証情報のおき場所 [#g62e85b1]
Unix 系システムでは~/.subversion/auth/、 Windows であれば...
一度認証に成功するとそのID/PASSWORS情報がキャッシュされる...
コマンドラインオプション中で--username または--passwordを...
**ネットワーク越しの利用 [#jbf25cc2]
httpを使わない場合はsvnプロトコルを利用するのがシンプル。...
***デーモンとして起動(3690ポートを利用) [#f6765fed]
svnserve -d -r リポジトリへのパス
/etc/rc.d/rc.localにでも記述しておけば自動起動になる。
***xined経由で起動(安全) [#r085aa0b]
[[参考URL:http://yik.jp/wiki/svn_setting.html#l8]]
# vi /etc/services
svnserve 3690/tcp # Subver...
svnserve 3690/udp # Subver...
# vi /etc/xined.d/svnserve
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/bin/svnserve
server_args = -i
}
# chkconfig --add svnserve
# /etc/init.d/xinetd restart
*Windowsから利用する [#q8dc943c]
-TortoiseSVNというソフトがエクスプローラーの拡張でインス...
**TortoiseSVNの使い方 [#hb319e45]
エクスプローラーの拡張シェルとしてインストールされる。開...
**TSVNCache.exeが重い時 [#l1f989cc]
デフォルトでは全てのドライブの更新を監視しているため、そ...
**Can't convert string from native encoding to 'UTF-8' [#...
ターミナルのセッティングが英語で日本語を含むものを落とす...
**Subclipseの使い方 [#cf4ac129]
こちらはEclipseプラグイン。
**コマンドラインで使う [#safec12e]
***リポジトリ一覧見る [#f547b097]
-指定したパス以下のファイル・ディレクトリ情報が表示される。
svn list svn://ホスト名/svn/repos
**デフォルトの書き込み制限解除 [#bc97634c]
リポジトリのルートのconf以下のファイルを変更
-特定のユーザーのみ書き込み可能にする場合
[general]
password-db = passwd
-誰でも書き込めるようにする場合
[general]
anon-access = write
auth-access = write
認証に関しての情報が少なすぎ!!!
httpの場合はmod_svn_authzというモジュールを組み込まない...
*BACKUP&RECOVERY [#bf0671a3]
-設定ファイルは別途バックアップ必要。出力はテキストファイ...
svnadmin dump /usr/local/takeru > takeru.out
#一気に圧縮する
svnadmin dump /usr/local/takeru | gzip > takeru.out.gz
-リカバリーはリポジトリを作成後dumpを流し込む
mkdir -p /usr/local/takeru_from_backup
svnadmin create /usr/local/takeru_from_backup
svnadmin load /usr/local/takeru_from_backup < takeru.out
-設定ファイルのコピー
SVNROOT/confディレクトリ以下をごっそりコピーすればよい。
-ダンプするときに一部除外する(GPSデータを除外するときに利...
svnadmin dump /home/svn/repos | svndumpfilter exclude 除...
-複数も行ける
svnadmin dump /home/homesvn/repos | svndumpfilter exclud...
疑問点:excludeのパスはフルパスというか前方一致
-日付つきでバックアップ
svnadmin dump /home/svn/repos > svn_rep_backup_`date +%...
-リポジトリを変えた場合はクライアント側でリポジトリのrelo...
cd リポジトリのワーキングコピー
#URL情報取得
svn info | grep URL
svn sw --relocate 旧URL 新URL
**自宅サーバでの移行作業記録 [#q93a31e0]
-移行元(リポジトリは/home/svn/reposとする)
svnadmin dump /home/svn/repos > /var/tmp/repos.out
# 圧縮してもOK
svnadmin dump /home/svn/repos | gzip > /var/tmp/repos.ou...
-移行先
mkdir -p /home/svn/repos
svnadmin create /home/svn/repos/
ここまではリポジトリ作成と同じ手順
svnadmin load /home/svn/repos < /var/tmp/repos.out
流し込むのでそれなりに時間がかかる
*コマンド一覧 [#ob7a0c7c]
リポジトリは/svn/repos
|リポジトリ初期化(ディレクトリは作成しておく)|svnadmin ...
|リポジトリを見る|svn list file:///svn/repos|
|インポート|svn import [ローカルdir] http://localhost/svn...
|ローカルでインポート|svn import file:///svn/repos/newrep...
|チェックアウト(通信方式(file,svn,http)が.svn/entriesにか...
|diffチェック|svn diff [ファイル名]|
|ブランチ、トランク間のdiff|svn diff url@HEAD url@HEAD | ...
|プロンプトを出さない(マージの時に衝突のプロンプトを無視...
**ブランチ作成 [#efed07e6]
タグもコピー先のディレクトリがtags以下にするという慣例を...
svn copy http://example.com/svn/trunk http://example.com...
**ブランチ分かれてからのログ取得 [#r6bb5de1]
svn log --stop-on-copy [url]
*用語集 [#se615446]
|trunk|メインとなるリポジトリ|
|branch|trunkから枝分かれしたもの(branchは枝の意味)|
|tag|ある時点のソースに名前を付けてスナップショットにでき...
|commit|ローカルにある変更をリポジトリに反映すること|
*WebUI [#lbbd8365]
ViewVCというのがある。
*インストール [#hb6fee6f]
RPMインストールでさまざまな依存関係があるので公式サイトか...
**バイナリからインストール(推奨) [#v327b17d]
下記ソースインストールは2004年の情報で今はバイナリがある...
**ソースインストール(非推奨) [#gedbfbfd]
RedHatES3GUIインストールサーバータイプで開発ツールのみ選...
**db [#t3d53b02]
# cd biuld_unix
# ../dist/configure
**apache [#k76f5d8c]
# ./configure --enable-mods-shared=all --enable-shared=y...
**subversion [#h6001f1d]
# ./configure --with-apr=/usr/local/apache2 --with-apr-u...
ですべて問題なく。
-追記:apr-utilなどはソースに含まれているので./configureだ...
*外部リンク情報 [#k0782c08]
http://c-brains.jp/blog/wsg/09/11/17-143618.php
*Subclipseでのトラブルシューティング [#x6ef0d84]
[working copy at a single revision]とでて何も出てこない。
→ワーキングディレクトリを更新すればよい
#counter
終了行:
-CVSの後継。徐々にCVSを置き換えていてオープンソースプロダ...
#contents
*特徴 [#o6d0e7f1]
-CVSと違いファイルの移動やリネームしても履歴は継続される
-複数ファイルのcommitを1つのコミットとして扱える(グルー...
-賛否両論あろうが排他制御ができるようになった(昔は取り入...
*よく使うコマンド [#f2c7a102]
**属性の確認と設定 [#mdf4f206]
svn proplist ファイル名
svn propset svn:exacutable true ファイル名
**svnからとってくる [#gdc26fc9]
-深さを指定しないと全部とってくる
svn co リポジトリへのパス--depth=immediates or infinity
-リビジョンを指定するなら -rを使う
svn checkout -r 2 リポジトリへのパス
-リポジトリパスはhttpなら通常のURLと一緒。
-ローカルのリポジトリから取得
svn checkout file:///home/svn/repos/
**今のリポジトリ状態をチェック [#a7e3d1a6]
svn st
追加や修正のあったファイルの状態を表示できる。
**リポジトリを最新化 [#x96c837b]
-更新したいディレクトリに移動
svn up
**リポジトリを特定のリビジョンに戻す [#ce11a6ba]
svn logしてバージョンを特定し
svn up -r XXX
**コミット [#b99c50e5]
svn commit もしくは svn ci
**変更の取り消し [#n9c202b8]
svn revert
-コミットしてしまった場合はマージすることになる。
merge --depth=infinity -r取り消したいリビジョン番号:左よ...
**ログを見る [#t06435ff]
svn log --revision リビジョン番号 リポジトリURL
-そのリビジョンでコミットされたファイルを取得
svn log -r リビジョン番号 -v
**ファイルに保存された認証情報を消す [#s6404960]
rm -rf ~/.subversion/auth/svn.simple/*
*他のプロジェクトのソースを参照する(externals) [#oeb36b1b]
シンボリックリンクのようなもの。メインは別のリポジトリで...
**TortoiseSVN設定 [#i40061f7]
属性の設定を選んで、属性名はsvn:externalsを選ぶ。
設定値はファイル単位で記述、絶対パスでも可能
../../../../../../../404.html 404.html
../../../../../../../500.html 500.html
*マージ [#w80853f4]
よく混乱してしまうのがマージである。基本的にブランチで枝...
**マージの方法 [#l23f6ac4]
+マージ先のプロジェクトをチェックアウト(マージ元はリポジ...
+マージしたい変更のリビジョンのみを指定して、マージ実行
+変更点を確認するのと、merge-infoプロパティに指定したリビ...
-リビジョン指定してコミット
cd マージされる側のワーキングコピー
svn merge -c 305212,305357,305716,305867,305962,306151,3...
*TIPS [#q7155123]
**サーバー移転 [#m577bfd9]
サーバの情報が記述されているメタ情報(.svn)を書き換える必...
svn switch --relocate
**ブランチ切り替え [#g22f1634]
svn switch 新URL
**ローカルチェックアウトディレクトリ移転 [#m61b6617]
これはトップレベルフォルダを移動するだけで良い。一旦チェ...
**リビジョン間の差分をチェック [#w614f97d]
***リポジトリ同士の比較 [#v07ba01f]
-リポジトリ1のリビジョン1000とリポジトリ2のheadを比較する
svn diff リポジトリ1URL@1000 リポジトリ2URL@head
-とあるリポジトリのリビジョン間(1000-2000)の差分を表示
svn -r 1000:2000 リポジトリ1URL
最後に--summarizeをつけるとファイルの出力のみとなる
***チェックアウトディレクトリとリポジトリの差分をチェック...
-ワーキングディレクトリーに移動して以下のコマンドを実施
svn diff -r77771:head [ワーキングディレクトリ名]
移動しない場合は引数で指定可能
***共通ファイル名だけを抽出する [#fc8d660f]
--summarizeオプションを付けるとファイル名のみ出力
svn diff -r77771:head --summarize [ワーキングディレクト...
*設定など [#i05d8d47]
**Apacheと連携して使う [#t198c7ea]
-CentOS5.4で検証。まずはsvnモジュールのインストール
yum install mod_dav_svn.
-次にhttpd.confの設定
-IPアドレス制限とBASIC認証をかけている
<Location /mysvn>
DAV svn
SVNParentPath "/home/svn"
SVNListParentPath on
deny from all
allow from xxx.xxx.xxx.xxx
AuthType Basic
AuthName "Rutake Repository"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Location>
-リポジトリの以下のディレクトリに書き込み権限を与えておく...
mkdir /home/svn/repos
svnadmin create /home/svn/repos
chown -R apache:apache /home/svn/repos
**認証情報のおき場所 [#g62e85b1]
Unix 系システムでは~/.subversion/auth/、 Windows であれば...
一度認証に成功するとそのID/PASSWORS情報がキャッシュされる...
コマンドラインオプション中で--username または--passwordを...
**ネットワーク越しの利用 [#jbf25cc2]
httpを使わない場合はsvnプロトコルを利用するのがシンプル。...
***デーモンとして起動(3690ポートを利用) [#f6765fed]
svnserve -d -r リポジトリへのパス
/etc/rc.d/rc.localにでも記述しておけば自動起動になる。
***xined経由で起動(安全) [#r085aa0b]
[[参考URL:http://yik.jp/wiki/svn_setting.html#l8]]
# vi /etc/services
svnserve 3690/tcp # Subver...
svnserve 3690/udp # Subver...
# vi /etc/xined.d/svnserve
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/bin/svnserve
server_args = -i
}
# chkconfig --add svnserve
# /etc/init.d/xinetd restart
*Windowsから利用する [#q8dc943c]
-TortoiseSVNというソフトがエクスプローラーの拡張でインス...
**TortoiseSVNの使い方 [#hb319e45]
エクスプローラーの拡張シェルとしてインストールされる。開...
**TSVNCache.exeが重い時 [#l1f989cc]
デフォルトでは全てのドライブの更新を監視しているため、そ...
**Can't convert string from native encoding to 'UTF-8' [#...
ターミナルのセッティングが英語で日本語を含むものを落とす...
**Subclipseの使い方 [#cf4ac129]
こちらはEclipseプラグイン。
**コマンドラインで使う [#safec12e]
***リポジトリ一覧見る [#f547b097]
-指定したパス以下のファイル・ディレクトリ情報が表示される。
svn list svn://ホスト名/svn/repos
**デフォルトの書き込み制限解除 [#bc97634c]
リポジトリのルートのconf以下のファイルを変更
-特定のユーザーのみ書き込み可能にする場合
[general]
password-db = passwd
-誰でも書き込めるようにする場合
[general]
anon-access = write
auth-access = write
認証に関しての情報が少なすぎ!!!
httpの場合はmod_svn_authzというモジュールを組み込まない...
*BACKUP&RECOVERY [#bf0671a3]
-設定ファイルは別途バックアップ必要。出力はテキストファイ...
svnadmin dump /usr/local/takeru > takeru.out
#一気に圧縮する
svnadmin dump /usr/local/takeru | gzip > takeru.out.gz
-リカバリーはリポジトリを作成後dumpを流し込む
mkdir -p /usr/local/takeru_from_backup
svnadmin create /usr/local/takeru_from_backup
svnadmin load /usr/local/takeru_from_backup < takeru.out
-設定ファイルのコピー
SVNROOT/confディレクトリ以下をごっそりコピーすればよい。
-ダンプするときに一部除外する(GPSデータを除外するときに利...
svnadmin dump /home/svn/repos | svndumpfilter exclude 除...
-複数も行ける
svnadmin dump /home/homesvn/repos | svndumpfilter exclud...
疑問点:excludeのパスはフルパスというか前方一致
-日付つきでバックアップ
svnadmin dump /home/svn/repos > svn_rep_backup_`date +%...
-リポジトリを変えた場合はクライアント側でリポジトリのrelo...
cd リポジトリのワーキングコピー
#URL情報取得
svn info | grep URL
svn sw --relocate 旧URL 新URL
**自宅サーバでの移行作業記録 [#q93a31e0]
-移行元(リポジトリは/home/svn/reposとする)
svnadmin dump /home/svn/repos > /var/tmp/repos.out
# 圧縮してもOK
svnadmin dump /home/svn/repos | gzip > /var/tmp/repos.ou...
-移行先
mkdir -p /home/svn/repos
svnadmin create /home/svn/repos/
ここまではリポジトリ作成と同じ手順
svnadmin load /home/svn/repos < /var/tmp/repos.out
流し込むのでそれなりに時間がかかる
*コマンド一覧 [#ob7a0c7c]
リポジトリは/svn/repos
|リポジトリ初期化(ディレクトリは作成しておく)|svnadmin ...
|リポジトリを見る|svn list file:///svn/repos|
|インポート|svn import [ローカルdir] http://localhost/svn...
|ローカルでインポート|svn import file:///svn/repos/newrep...
|チェックアウト(通信方式(file,svn,http)が.svn/entriesにか...
|diffチェック|svn diff [ファイル名]|
|ブランチ、トランク間のdiff|svn diff url@HEAD url@HEAD | ...
|プロンプトを出さない(マージの時に衝突のプロンプトを無視...
**ブランチ作成 [#efed07e6]
タグもコピー先のディレクトリがtags以下にするという慣例を...
svn copy http://example.com/svn/trunk http://example.com...
**ブランチ分かれてからのログ取得 [#r6bb5de1]
svn log --stop-on-copy [url]
*用語集 [#se615446]
|trunk|メインとなるリポジトリ|
|branch|trunkから枝分かれしたもの(branchは枝の意味)|
|tag|ある時点のソースに名前を付けてスナップショットにでき...
|commit|ローカルにある変更をリポジトリに反映すること|
*WebUI [#lbbd8365]
ViewVCというのがある。
*インストール [#hb6fee6f]
RPMインストールでさまざまな依存関係があるので公式サイトか...
**バイナリからインストール(推奨) [#v327b17d]
下記ソースインストールは2004年の情報で今はバイナリがある...
**ソースインストール(非推奨) [#gedbfbfd]
RedHatES3GUIインストールサーバータイプで開発ツールのみ選...
**db [#t3d53b02]
# cd biuld_unix
# ../dist/configure
**apache [#k76f5d8c]
# ./configure --enable-mods-shared=all --enable-shared=y...
**subversion [#h6001f1d]
# ./configure --with-apr=/usr/local/apache2 --with-apr-u...
ですべて問題なく。
-追記:apr-utilなどはソースに含まれているので./configureだ...
*外部リンク情報 [#k0782c08]
http://c-brains.jp/blog/wsg/09/11/17-143618.php
*Subclipseでのトラブルシューティング [#x6ef0d84]
[working copy at a single revision]とでて何も出てこない。
→ワーキングディレクトリを更新すればよい
#counter
ページ名: