svnを使って作業する場合、以下の流れになると思います。
なお、チェックアウトは作業コピーを作成するので初回のみの作業となり、それ以降は2-3の繰り返しになります。
Subversionのリポジトリーからプロジェクトをチェックアウトします。これによりローカルマシンにリポジトリの作業コピーが作成されます。
[paso ~] svn checkout svn://hogehoge.com/hoge/trunk
ファイルの中身を修正はいつでも自由にできます。ただし、追加、削除した場合はsvnにその旨を記録しなければなりません。 また、ファイル名の変更や移動はsvnコマンドを使って行わなければなりません。 もちろん、それらの作業を取り消すこともできます。
概要 | 操作 | 詳細 |
---|---|---|
追加 | svn add [path]... | ファイルやフォルダを追加します。 |
削除 | svn delete (or del) [path]... | ファイルやフォルダを削除します。 |
コピー | svn copy [path]... | ファイルやフォルダーのコピーを作成し、add状態にします。ファイルをコピーして、svn addした結果と同じです。 |
移動 | svn move [path]... | ファイルやフォルダーを移動(名前の変更も含む)します。実際は、delしてからaddしてます。よって、moveし忘れた場合はrevertをするか、元のファイルをdelすれば問題ありません。 |
変更取消 | svn revert [path]... | 指定したパスまたはファイルを修正前(「update」した直後)の状態に戻します。「-R」オプションを使うと再帰的に取り消してくれます。 |
自分が追加、修正したファイルなどの確認が必要です。確認は「svn status」と入力します。
このように「svn status」と入力すると、変更点があったファイルの状態を英文字を使って教えてくれます。 なお、英文字の意味は下表を参考にしてください。
英文字 | 詳細 |
---|---|
A | 「svn add」されたファイルです。 |
M | ファイルが修正されています。 |
D | 「svn del」されたファイルです。 |
! | ファイルが見当たらない場合です。「svn del」を使わずに直接削除する場合などで表示されます。 |
? | バージョン管理されていないファイルです。ファイルを新規に作成し、「svn add」をしていないと、これが表示されます。 |
修正等が終了したら、サーバーにコミットします。 これにより、サーバーのリポジトリに変更点が反映され、他の人が取得することができます。 なお、「svn ci」でファイルパスを省略するとはカレントディレクトリー以下がコミット対象となります。
[paso ~] svn commit --message 'コーディング規約に準じていないものを軒並み修正'
[paso ~] svn ci -m 'コーディング規約に準じていないものを軒並み修正'
[paso ~] svn ci -m 'トップページリニューアル' ./www/index.html
他の人が修正、コミットしたものを取得するにはアップデートを使います。
[paso ~] svn update
大量のファイルを追加した場合や、svn delを使わずにファイルを削除した場合など、1つ1つファイルをaddしたりdelしたりするのは大変手間がかかります。 そこでlinuxの標準のコマンドを使えば、一括で処理することが可能です。
各例を解説すると、正規表現を使ってsvn statusの先頭の文字を判断し(svn status | grep ^!)、そのファイル名を取得(awk '{print $2}')し、 取得したファイル名を引数にしてsvnコマンドを実行(xargs svn add or del)しています。
COPYRIGHT © 2008 Deepnet Inc. ALL RIGHTS RESERVED.