ホーム > 技術情報 > Subversionの基礎練習 | 検索 | 更新情報 |
|
バージョン管理ツールSubversionの基礎練習です。 Windows XPのコマンドプロンプトでSubversionの基本的なコマンドを動かしていきます。 Subversionを学び始めるきっかけにどうぞ。
Windows XPのコマンドプロンプトで、 バージョン管理ツールSubversionの基本的なコマンドを動かしてみましょう。
この文書の通りに実行すると、 基本的なSubversionのコマンドをひととおり試すことができます(できるはずです)。
バージョン管理というものやSubversionについての解説は省き、 オペレーションだけを示します。
Subversion (subversion.tigris.org)の Downloadsのページから、 Windows NT, 2000, XP and 2003 を探し、そこに書いてある文章、
The same command-line binaries and libraries, but packaged within a friendly Installer program, are in the same directory of the file-sharing area, but end with "-setup.exe".
の the same directoryというリンクをたどります。 ファイルの一覧が出るので、新しいものを選んでダウンロードします。
結城が以下で使ったファイルは、 svn-1.4.5-setup.exe です。
ダウンロードしたファイルを動かすとインストールが始まります。 インストール先はデフォルトのまま、 C:\Program Files\Subversion としました。
追記: 2008-11-04 Windows版のダウンロードURLは http://subversion.tigris.org/getting.html#windows に変更になったようです。
リポジトリ用のディレクトリC:\home\reposを作ります。
C:\> mkdir C:\home C:\> mkdir C:\home\repos
はじめにリポジトリを初期化します。 この初期化は、そのリポジトリを使う最初だけ行います。
C:\> svnadmin create C:\home\repos
新しいモジュールをリポジトリにインポートします。
まずは作業場所を整え、readme.txtというファイルを作ります。
C:\> mkdir work C:\> cd work C:\work> mkdir myproject C:\work> cd myproject C:\work\myproject> echo This is readme file. > readme.txt ※readme.txtを作った C:\work\myproject> type readme.txt ※内容の確認 This is readme file.
インポートするリポジトリは、file:///C:/home/repos/myprojectのようにURLで指定することに注意しましょう。
C:\work\myproject> svn import file:///C:/home/repos/myproject -m "Initial import."
追加しています readme.txt
リビジョン 1 をコミットしました。
C:\work\myproject> cd .. C:\work> del myproject C:\work\myproject\*、よろしいですか (Y/N)? y C:\work> rmdir myproject
ここまでで、myprojectディレクトリの内容はなくなりましたが、 リポジトリにはmyprojectというモジュールがすでに登録されています。
C:\work> svn checkout file:///C:/home/repos/myproject myproject A myproject\readme.txt リビジョン 1 をチェックアウトしました。 C:\work> cd myproject C:\work\myproject> dir /b readme.txt C:\work\myproject> type readme.txt This is readme file.
確かにreadme.txtが取り出せています。
実は、ここには管理用のディレクトリ .svn も隠し属性付きで作られています。
C:\work\myproject> dir /b/a ※/aオプションで全部見る
.svn ※管理用のディレクトリ
readme.txt
readme.txtファイルに一行追加してから、 「元にしたリビジョン(リビジョン1)」と「作業コピー」との差分を確認してみましょう。
C:\work\myproject> echo Nice to meet you. >> readme.txt C:\work\myproject> type readme.txt This is readme file. Nice to meet you. C:\work\myproject> svn diff ※差分を見てみよう Index: readme.txt =================================================================== --- readme.txt (リビジョン 1) +++ readme.txt (作業コピー) @@ -1 +1,2 @@ This is readme file. +Nice to meet you.
作業コピーに加えた修正は、コミットしてはじめてリポジトリに反映されます。
コミットするときには、-m
オプションで修正内容を書きます。
C:\work\myproject> svn commit -m "Add a greeting."
送信しています readme.txt
ファイルのデータを送信しています .
リビジョン 2 をコミットしました。
C:\work\myproject> svn status
何も表示されないので、コミットし忘れているファイルはありません。 自分が作業コピーに加えた修正は、リポジトリに反映されています。
一般に複数人で開発しているときには、リポジトリに対して誰かが修正をコミットしているかもしれません。 リポジトリに対して行われた修正を自分の作業コピーに取り込みましょう。
C:\work\myproject> svn update
リビジョン 2 です。
この練習ではリポジトリにコミットしているのは自分だけですから、 他の誰かがリポジトリを更新しているはずはありません。 ですから、単に現在のリビジョン番号が表示されてsvn updateの実行は終わります。
C:\work\myproject> echo Hello. > hello.txt C:\work\myproject> type hello.txt Hello.
C:\work\myproject> svn status
? hello.txt ※?は「知らない」印
いま作ったファイルhello.txtはまだ追加していませんので、 Subversionはhello.txtのことを「知らない」ことになります。 svn statusを使うとSubversionが「知らない」ファイルがわかります。
C:\work\myproject> svn add hello.txt A hello.txt ※Aは「追加(Add)」の印 C:\work\myproject> svn status A hello.txt ※Aは「追加(Add)」の印
ファイルhello.txtを作業コピーに追加しました。 でも、まだリポジトリには反映していません。 svn statusを実行すると、追加したけれどまだコミットしていないファイルがわかります(Aという印がつきます)。
C:\work\myproject> svn commit -m "Add hello.txt." 追加しています hello.txt ファイルのデータを送信しています . リビジョン 3 をコミットしました。 C:\work\myproject> svn status
コミットした後、再度svn statusしてみると、 hello.txtはもう表示されません。 すでにコミットされたからです。
新しいディレクトリも、ファイルと同じように作成してから追加してもよいのですが、 ここではディレクトリを作ると同時に追加してみます。
C:\work\myproject> svn mkdir src
A src
C:\work\myproject> cd src C:\work\myproject\src> ※ここで、エディタを使ってGood.javaを作成する C:\work\myproject\src> type Good.java public class Good { public static void main(String[] args) { System.out.println("Good"); } } C:\work\myproject\src> svn add Good.java A Good.java C:\work\myproject> svn status A src A src\Good.java C:\work\myproject\src> svn commit -m "Add a Java source file." 追加しています src 追加しています src\Good.java ファイルのデータを送信しています . リビジョン 4 をコミットしました。 C:\work\myproject\src> cd .. C:\work\myproject> svn status ※コミット忘れがないので、何も表示されません。
C:\work\myproject> svn update リビジョン 4 です。 C:\work\myproject> cd src C:\work\myproject\src> ※ここで、エディタを使ってGood.javaを編集する C:\work\myproject\src> type Good.java public class Good { public static void main(String[] args) { System.out.println("Good!"); } } C:\work\myproject\src> svn diff ※差分を見てみよう Index: Good.java =================================================================== --- Good.java (リビジョン 4) +++ Good.java (作業コピー) @@ -1,5 +1,5 @@ public class Good { public static void main(String[] args) { - System.out.println("Good"); + System.out.println("Good!"); } } C:\work\myproject\src> svn commit -m "Add an exclamation mark." 送信しています src\Good.java ファイルのデータを送信しています . リビジョン 5 をコミットしました。
ファイル名をGood.javaからMain.javaに変更するには以下のようにします。 変更後はコミットが必要です。
C:\work\myproject\src> svn status C:\work\myproject\src> svn move Good.java Main.java A Main.java D Good.java C:\work\myproject\src> dir /b *.java Main.java C:\work\myproject\src> svn status A + Main.java D Good.java C:\work\myproject\src> svn commit -m "Rename it." 削除しています src\Good.java 追加しています src\Main.java リビジョン 6 をコミットしました。 C:\work\myproject\src> svn status
Subversionの基礎練習は以上です。 お疲れさま。
誤: svn import file:///C:/home/repos -m "Initial import." svn checkout file:///C:/home/repos myproject 正: svn import file:///C:/home/repos/myproject -m "Initial import." svn checkout file:///C:/home/repos/myproject myproject
あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。