Subversion 超入門(1)

Subversion はEclpseやVisualStudioのプラグインとかクライアントとかで直感的に何となく使えちゃうんだけど、「何となく」使っちゃってる人向けに、概要を簡単にまとめる。まぁここを読めばよいのだが、手っ取り早く。

基本的な使い方

基本的な利用方法の概要

Subversion基本概要図

まず、各種ツールはインストールされているとする。

svnadmin create

サーバーに、ディレクトリ(OSのファイルシステム)とリポジトリ(OSのディレクトリ内に作成される一連のファイル群をまとめた概念)を作成。

リポジトリは、すべての変更を記録する、単に仮想的にバージョンかされたファイルシステム。

  1. # svnadmin create /var/www/svn/myrepo
  2. # chown -R apache:apache myrepo

svn import

ローカルのプロジェクト(バージョン管理対象としたいフォルダ)をサーバーのリポジトリにインポートする。

これで、サーバーのリポジトリに登録され、リビジョンが振られる。

リビジョンはリポジトリのスナップショット番号で、コミットのたびに1つずつ大きくなる。

以下の様な、キーワードで識別される

HEAD リビジョン ・・・ リポジトリにある最新のリビジョンのこと

BASE リビジョン ・・・ 作業コピーにある、「修正元」となるリビジョンのこと

COMMITED ・・・ ファイル、ディレクトリが変更された BASE 以前の最後のリビジョン

PREV ・・・ 変更があった最後のリビジョンの直前のリビジョン

  1. c:\work>tree /f myproject
  2. フォルダー パスの一覧
  3. ボリューム シリアル番号は 00000002 F2F7:41B7 です
  4. C:\WORK\MYPROJECT
  5. ├─branches
  6. ├─tags
  7. └─trunk
  8. Bar.java
  9. Foo.java
  10.  
  11.  
  12. c:\work>svn import ./myproject http://192.168.24.14/svn/myrepo/ --username piroto --password north123
  13.  
  14. -- この行以下は無視されます --
  15.  
  16. A myproject
  17.  
  18. ログメッセージの変更や指定がなされていません
  19. 中断 (a), 続行 (c), 編集 (e):
  20. c
  21. 追加しています myproject\trunk
  22. 追加しています myproject\trunk\Foo.java
  23. 追加しています myproject\trunk\Bar.java
  24. 追加しています myproject\branches
  25. 追加しています myproject\tags
  26.  
  27. リビジョン 1 をコミットしました。

取り込んだ myproject を削除してみる

  1. c:\work>rmdir /s myproject

svn checkout

myproject/trunk 以下を作業コピーとして取得。バージョン管理下に置かれる

  1. c:\work>svn checkout http://192.168.24.14/svn/myrepo/trunk myproject
  2. A myproject\Foo.java
  3. A myproject\Bar.java
  4. リビジョン 1 をチェックアウトしました。

svn status

コミットする前に、自分が何をしたのかみておく。

A ・・・ 追加予告

C ・・・ 衝突の常態

D ・・・ 削除予告

M ・・・ 修正されている

R ・・・ 内容置き換え準備

? ・・・ バージョン管理下にない

以下の変更をおこなってみる

  • Foo.java を編集
  • Hoge.java を追加
  1. c:\work\myproject>svn status
  2. ? Hoge.java
  3. M Foo.java

svn add

作業コピーに追加したファイルを、バージョン管理下へ置くことを予約する(commitで反映される)

作業コピーの構成を変える場合、svn copy、svn move、svn delete コマンドを使うこと。

  1. c:\work\myproject>svn add Hoge.java
  2. A Hoge.java

svn diff

  1. c:\work\myproject>svn diff
  2. Index: Hoge.java
  3. ===================================================================
  4. --- Hoge.java (リビジョン 0)
  5. +++ Hoge.java (リビジョン 0)
  6. @@ -0,0 +1,4 @@
  7. +public class Hoge {
  8. + public static void main(String[] args) {
  9. + }
  10. +}
  11. \ No newline at end of file
  12. Index: Foo.java
  13. ===================================================================
  14. --- Foo.java (リビジョン 1)
  15. +++ Foo.java (作業コピー)
  16. @@ -1,4 +1,5 @@
  17. public class Foo {
  18. public static void main(String[] args) {
  19. + System.out.println("Foo!");
  20. }
  21. }
  22. \ No newline at end of file

svn commit

リポジトリに自分のファイルの新しいバージョンをコミット

  1. c:\work\myproject>svn commit
  2.  
  3. -- この行以下は無視されます --
  4.  
  5. A Hoge.java
  6. M Foo.java
  7.  
  8. ログメッセージの変更や指定がなされていません
  9. 中断 (a), 続行 (c), 編集 (e):
  10. c
  11. 送信しています Foo.java
  12. 追加しています Hoge.java
  13. ファイルのデータを送信しています ..
  14. リビジョン 2 をコミットしました。

svn update

リポジトリの最新状態で作業コピーを更新する。

他のユーザと編集箇所の競合がある場合。

  1. c:\work\myproject>svn update
  2. 'Bar.java' で競合が見つかりました。
  3. 選択: 延期 (p), 全差分 (df), 編集 (e),
  4. 衝突自分 (mc), 衝突他人 (tc),
  5. , すべてのオプションを表示 (s): e
  6. public class Bar {
  7. public static void main(String[] args) {
  8. <<<<<<< .mine
  9. System.out.println("Bar!");
  10. =======
  11. System.out.println("Bar2");
  12. >>>>>>> .r3
  13. }
  14. }選択: 延期 (p), 全差分 (df), 編集 (e), 解決版 (r),
  15. 衝突自分 (mc), 衝突他人 (tc),

今日はここまで。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です