S-JIS[2008-12-27/2011-09-23] 変更履歴
SVNリポジトリーそのものを操作するコマンド。
サブコマンド | 概要 | CVS相当 | 備考 | 更新日 | |
---|---|---|---|---|---|
help | h | ヘルプ | cvs --help | ||
create | リポジトリー作成 | cvs init | |||
dump | リポジトリーをファイルへ出力 | →リポジトリーを移行する例 | 2011-09-23 | ||
load | リポジトリーへファイルからロード | →リポジトリーを移行する例 | 2011-09-23 | ||
hotcopy | リポジトリーをコピー | ||||
verify | リポジトリーの検証 | ||||
recover | リポジトリーの修復 | ||||
upgrage | リポジトリーのバージョンアップ | ||||
lslocks | ロック一覧を表示 | 2008-12-29 | |||
rmlocks | ロックを削除 | 2008-12-29 | |||
lstxns | トランザクション一覧を表示 | ||||
rmtxns | トランザクションを削除 | ||||
setlog | コミットログの変更 | 2008-12-28 |
SVNリポジトリー内の情報を見る為のコマンド(照会専用)。
サブコマンド | 概要 | CVS相当 | 更新日 | ||||
---|---|---|---|---|---|---|---|
help | h | ヘルプ | cvs --help | ||||
youngest | 最新リビジョン番号 | 2008-12-28 | |||||
history | リビジョン番号一覧 | 2009-01-27 | |||||
author | 指定リビジョン | コミットしたユーザー | 2008-12-28 | ||||
date | コミットした日時 | 2008-12-28 | |||||
log | コミットログメッセージ | 2008-12-28 | |||||
info | コミット情報(ユーザー・日時・ログ) | 2008-12-28 | |||||
proplist | plist | pl | プロパティー(属性)一覧 | 2008-12-28 | |||
propget | pget | pg | プロパティー(属性) | 2008-12-28 | |||
tree | ディレクトリー・ファイル一覧 | 2008-12-28 | |||||
changed | 変更のあったファイル一覧 | 2008-12-28 | |||||
dirs-changed | 変更のあったディレクトリー一覧 | 2008-12-28 | |||||
diff | 変更内容一覧 | ||||||
cat | 指定ファイル | ファイル内容 | cvs update -p |
リビジョン指定を省略した場合、最新リビジョンが対象。
svnlookでは、リポジトリーの場所を表す引数が必須となる。[2008-12-29]
ただ、長めのパスだと毎回打つのが面倒なので、そのパスへ移動して「.
(カレントディレクトリー)」で指定してしまうのが楽かも。
(CVSROOTみたいな環境変数があれば便利なのに…)
> svnlook youngest リポジトリの引数が必要です 使用方法を知りたいときは 'svnlook help' と打ってください。 > svnlook youngest C:/svn/sample 8 > cd C:/svn/sample C:\svn\sample> svnlook youngest . 8
SVNワークディレクトリーの操作を行うコマンド。
サブコマンド | 概要 | CVS相当 | 更新日 | |||
---|---|---|---|---|---|---|
help | h | ヘルプ | cvs --help | |||
import | 初回登録 | cvs import | 2008-12-29 | |||
checkout | co | 作業ディレクトリー作成 | cvs checkout | |||
update | up | 最新版取得 | cvs update | |||
add | ファイル・ディレクトリーの追加 | cvs add | ||||
remove | rm | delete | del | ファイル・ディレクトリーの削除 | cvs remove | |
copy | cp | ファイル・ディレクトリーのコピー | なし | |||
move | mv | rename | ren | ファイル・ディレクトリーの移動 | なし | 2009-01-18 |
mkdir | ディレクトリーの作成 | なし | ||||
status | stat | st | 作業ディレクトリー状態表示 | cvs status | ||
resolve | 競合(コンフリクト)解消 | |||||
changelist | cl | 変更リストの編集 | ||||
commit | ci | 変更の登録(確定) | cvs commit | |||
revert | 変更の取り消し | cvs update -C | ||||
list | ls | リポジトリー上のファイル一覧表示 | ||||
cat | ファイル内容表示 | cvs update -p | ||||
blame | praise | annotate | ann | ファイル内容表示(変更情報付) | cvs annotate | |
diff | di | ファイル内容比較 | cvs diff | |||
info | 情報表示 | 2009-01-27 | ||||
log | 変更履歴表示 | cvs log | ||||
propset | pset | ps | プロパティー(属性)設定 | |||
proplist | plist | pl | プロパティー(属性)一覧 | |||
propget | pget | pg | プロパティー(属性)表示 | |||
propedit | pedit | pe | プロパティー(属性)編集 | |||
propdel | pdel | pd | プロパティー(属性)削除 | |||
merge | マージ | cvs update -j | ||||
mergeinfo | ||||||
export | リポジトリーを出力 | cvs export | ||||
switch | sw | 別リポジトリーへ反映 | ||||
lock | ロック | 2008-12-29 | ||||
unlock | ロック解除 | 2008-12-29 | ||||
cleanup | ゴミ掃除 | |||||
copy | タグ・ブランチ作成 | cvs tag cvs rtag |
SVNリポジトリー内の最新のリビジョン番号を表示する。[2008-12-28]
> svnlook youngest C:/svn/sample 8
指定ファイルの履歴(SVNリポジトリー内のリビジョン番号一覧)を表示する。[2009-01-27]
> svnlook history C:/svn/sample trunk/sample/bin/build.xml リビジョン パス -------- ---- 68 /trunk/sample/bin/build.xml 56 /trunk/sample/bin/build.xml 8 /trunk/sample/temp/build.xml
パスが途中で変わっているのは、ファイルを移動した為。
ファイル(パス)を指定しなかった場合は、ルートの一覧が表示される。[2008-12-28]
(↓あんまり意味が無い(爆))
> svnlook history C:/svn/sample リビジョン パス -------- ---- 8 / 7 / 6 / 5 / 4 / 3 / 2 / 1 / 0 /
> svnlook history C:/svn/sample -r 6 -l 4 …リビジョン6から4件だけ表示
リビジョン パス
-------- ----
6 /
5 /
4 /
3 /
SVNリポジトリー内のツリー(ディレクトリー・ファイル)を表示する。[2008-12-28]
> svnlook tree C:/svn/sample / trunk/ test/ zzz.txt branches/ tags/
> svnlook tree C:/svn/sample trunk trunk/ test/ zzz.txt
> svnlook tree C:/svn/sample trunk/test test/ zzz.txt
-Nを付けると、サブディレクトリーは表示しない。
> svnlook tree C:/svn/sample -N / trunk/ branches/ tags/
--full-pathsを付けると、ツリー状でなく、フルパス形式で表示する。
> svnlook tree C:/svn/sample --full-paths / trunk/ trunk/test/ trunk/test/zzz.txt branches/ tags/
> svnlook tree C:/svn/sample trunk --full-paths trunk/ trunk/test/ trunk/test/zzz.txt
> svnlook tree C:/svn/sample --full-paths -N trunk trunk/ trunk/test/
コミットしたユーザー名を表示する。[2008-12-28]
> svnlook author C:/svn/sample -r 1 …リビジョン1をコミットしたユーザー
hishidama
コミットした日時を表示する。[2008-12-28]
> svnlook date C:/svn/sample -r 1 …リビジョン1がコミットされた日時
2008-12-28 04:21:58 +0900 (日, 28 12 2008)
ログ(コミット時のメッセージ)を表示する。[2008-12-28]
> svnlook log C:/svn/sample -r 1 …リビジョン1のコミットログ
test import
コミットしたユーザー・日付・ログメッセージをまとめて表示する。[2008-12-28]
> svnlook info C:/svn/sample -r 1 hishidama 2008-12-28 04:21:58 +0900 (日, 28 12 2008) 11 test import
下から2番目の数字は、ログメッセージの文字数(バイト数)。
例えば「trunkディレクトリー作成
」なら23(=5+9×2)。
設定されているプロパティー(属性)一覧を表示する。[2008-12-28]
-v(--verbose)を付けないと、属性値は表示されない。
> svnlook plist C:/svn/sample trunk/test/Test.java -v svn:mime-type : text/plain
リビジョンに付けられたプロパティーを見る場合には--revpropを付ける。
> svnlook plist C:/svn/sample --revprop -r 1 -v svn:log : test import svn:author : hishidama svn:date : 2008-12-27T19:21:58.781250Z
SVN主管の属性(「svn:
」で始まっている属性)にどのようなものがあるかについては、Subversionの属性(やsvn propsetのヘルプ(svn h pset))で見ることが出来る。
設定されているプロパティー(属性)の値を取得する。[2008-12-28]
> svnlook pget C:/svn/sample svn:mime-type trunk/test/Test.java text/plain
ただし、属性値が日本語(全角文字)の場合、文字化けする。(proplist -vで表示するのは大丈夫)
そのリビジョンで変更されたファイル一覧を表示する。[2008-12-28]
> svnlook changed C:/svn/sample -r 1 A test/ A test/test.txt
そのリビジョンで変更されたディレクトリーを表示する。[2008-12-28]
> svnlook dirs-changed C:/svn/sample -r 1 / test/
過去のログメッセージを変更(上書き)する。[2008-12-28]
C:\temp> echo メッセージを書き換える実験 > msg.txt C:\temp> svnadmin setlog C:/svn/sample -r 6 msg.txt --bypass-hooks C:\temp> svnlook log C:/svn/sample -r 6 メッセージを書き換える実験
--bypass-hooksを付けないと、以下のようなエラーになる。
C:\temp> svnadmin setlog C:/svn/sample -r 6 msg.txt svnadmin: リポジトリが、リビジョン属性を変更できるようにはなっていません。 管理者に pre-revprop-change フックを作成するよう頼んでください
SVNはログメッセージはリビジョンに対する「svn:log
」という属性の値として管理しているので、setlogも属性を変更する仕組みを使用している。
で、リビジョンに対する属性の変更は、デフォルトでは出来ないようになっているらしい。
(属性の変更前にフックという処理が呼ばれ、そこで操作の許可・拒否の判定をしている。pre-revprop-changeフックは、デフォルトでは常に拒否するようになっているのだそうだ。
なので、そのフックを修正して許可するようにするか、--bypass-hooksを付けてフックを呼ばないようにしないと、属性変更が出来ない)
ディレクトリー・ファイルをSVNリポジトリーに登録する(取り込む)。[2008-12-29]
-mか-Fによるコミットコメントの指定が必須。
> svn import test1 svn://localhost/sample/trunk/test -m'import test' 追加しています test\zzz.txt リビジョン 21 をコミットしました。
> svn import aaa.txt svn://localhost/sample/trunk/test/aaa.txt -m'aaa.txt import' 追加しています aaa.txt リビジョン 22 をコミットしました。
ワークディレクトリーの情報を表示する。[2009-01-27]
C:\workspace\sample> svn info パス: . URL: svn://localhost/sample/trunk/sample リポジトリのルート: svn://localhost/sample リポジトリ UUID: 74e08888-8a67-584b-a7ce-fbc74a52e606 リビジョン: 62 ノード種別: ディレクトリ 準備中の処理: 特になし 最終変更者: hishidama 最終変更リビジョン: 62 最終変更日時: 2009-01-27 03:00:57 +0900 (火, 27 1 2009)
C:\workspace\sample\bin> svn info test.txt パス: test.txt 名前: test.txt URL: svn://localhost/sample/trunk/sample/bin/test.txt リポジトリのルート: svn://localhost/sample リポジトリ UUID: 74e08888-8a67-584b-a7ce-fbc74a52e606 リビジョン: 66 ノード種別: ファイル 準備中の処理: 削除 最終変更者: hishidama 最終変更リビジョン: 66 最終変更日時: 2009-01-27 04:54:47 +0900 (火, 27 1 2009) テキストの最終更新: 2009-01-27 04:54:30 +0900 (火, 27 1 2009) チェックサム: d41d8cd98f00b204e9800998ecf8427e
情報 | 内容 |
---|---|
パス | 情報表示対象のディレクトリーやファイル名。 infoコマンドで指定したパス。省略した場合はカレントディレクトリー。 (カレントディレクトリーからの相対パス) |
名前 | 情報表示対象がファイルのときだけ出力される。 |
URL | URL。いわばリポジトリーのフルパス。 |
リポジトリのルート | リポジトリー名。 |
リビジョン | 情報表示対象の現在のリビジョン。 |
ノード種別 | ディレクトリやファイル。 |
準備中の処理 | 変更してコミットされていない場合の状態。 |
ファイルを移動、あるいはファイル名を変更する。[2009-01-18]
実際は削除+新規追加(remove+add)と同じ。
移動(改名)した直後(コミット前)は、新しいファイルの履歴(svn log)を見ても何も表示されない。
コミットしたら、移動前の履歴も含めて見る事が出来る。(移動前の履歴も残っている)
ファイルをロックする。[2008-12-29]
他人がロックしていると、ファイルをコミットすることが出来ない。
他人がロックしていると、自分もロックすることが出来ない。ただし--forceオプションを付けると強制的に自分がロックできるので、あまり意味が無いかも…。
> svn lock zzz.txt -m'lock test' 'zzz.txt' はユーザ 'hishidama' にロックされました。 > svn status K zzz.txt …ロックされている状態 > svn lock zzz.txt …2回はロックできない svn: 警告: Path '/trunk/test/zzz.txt' is already locked by user 'hishidama' in filesystem 'c:/svn/sample/db'
> svn commit zzz.txt …他人がロックしていると
送信しています zzz.txt
ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです):
svn: ユーザ hishidama はパス '/trunk/test/zzz.txt' にロックを所有していません (現在ロックをかけているのは other です)
ロックしようとするとpre-lockフックが呼ばれ、ロックが完了するとpost-lockフックが呼ばれる。
→フックの作成方法
ロックを解除する。[2008-12-29]
他人のロックは解除できない。が、--forceオプションを付けると解除できてしまうので、あまり意味が無いかも…。
> svn unlock zzz.txt
'zzz.txt' のロックは解除されました。
> svn unlock zzz.txt
svn: 'zzz.txt' はこの作業コピーでロックされていません …自分がロックを持っていなければ、他人がロックしていてもこのメッセージ
アンロックしようとするとpre-unlockフックが呼ばれ、アンロックが完了するとpost-unlockフックが呼ばれる。
→フックの作成方法
ロック一覧を表示する。[2008-12-29]
> svnadmin lslocks C:/svn/sample パス: /trunk/test/zzz.txt UUID トークン: opaquelocktoken:b086d27a-0a0e-5e4c-b008-48fcbce959ed 所有者: hishidama 作成日時: 2008-12-29 04:23:56 +0900 (月, 29 12 2008) 有効期限: コメント (1 行): lock test
ロックを削除する。[2008-12-29]
この場合、アンロックのフックは呼ばれない。
> svnadmin rmlocks C:/svn/sample /trunk/test/zzz.txt '/trunk/test/zzz.txt' のロックを解除しました。