重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

SVNでタグ指定でコミット履歴を見る方法は?

SVNで特定のファイルにのコミットコメント履歴を見たいと思っています。
その際に、2つのタグを指定しその間の履歴のみを参照したいと思っています。

CVSでは普通に用意されていて、容易に実行できました。
SVNでも同等の機能があるはずだと思っていたのですが、
少し調べたところCVSとは違い、タグを指定してコマンドを
実行する文化が無いようだということは分かりました。

代わりに、タグをつけたときのリビジョンを指定すればいいのですが
タグをつけたときのリビジョンの取得方法が分かりませんでした…。


そこで質問です
(1)(もしあるならば)SVNコマンドでタグを指定して
 コミットコメントの履歴を取得する方法
(2)SVNコマンドでタグを指定してそのリビジョン番号を取得する方法

※(1)(2)ともにそうですが、出来ないことが分かっているのなら
「出来ない」という情報をいただけるとうれしいです。
※作業自体はシェルに書き込むので、SVNへの複数回のアクセスや
Linuxコマンドを組み合わせて実行するのでもかまいません。

よろしくお願いします。

A 回答 (1件)

Subversionでは、タグの扱いがCVSとは違いますが…その辺りは理解されています?



推奨されているSubversionのリポジトリレイアウトでリポジトリを作成した場合、
タグを設定すると、「その時のリポジトリのコピー」を作成するような感覚になります。

タグ1を作成(Rev10)
ブランチ2を作成(Rev11)
ブランチ2にコミット(Rev12~14)
トランクにコミット(Rev15)
ブランチ2にコミット(Rev16)
トランクにブランチ2をマージしてコミット(Rev17)
タグ2を作成(Rev18)
とした場合、どこのログが欲しいのでしょうか?

svn log タグ1のURL
の場合は、タグ1を作成した時に記録したログしか出ませんし、
svn log タグ2のURL
の場合は、タグ2を作成した時に記録したログしか出ません。

上記のRev11~Rev17のログは取得できません。
リポジトリのルートでRev10~Rev18のログを取得することで、全部のログが取得できますが…
コミットした時のパスは異なっているので、そこから抽出するの少々手間が掛かるかと思われます。

一般的なSubversionの運用では、タグを切った後はそのタグに対してコミットすることはない…と思われますが。
この場合は、
svn info タグのURL
とすることで、Last Changed Revがリビジョンとなります。
# もちろん、タグの下でコミットしていたらアテになりませんが…
# その場合は svn log タグのURL で、最後に表示されたリビジョン…となるでしょう。

この回答への補足

> とした場合、どこのログが欲しいのでしょうか?

# 2つのタグを指定しその間の履歴

コマンドでいうと
「svn log -r 10:18 URL」もしくは「svn log -r 11:17 URL」
です。

※タグ・ブランチ作成のコメントはどうでもいいです。
含まれていても問題ないし、含まれていなくても問題ありません。
シェルではタグを指定することになるので、実質的には
「svn log -r 10:18 URL」になります。


さらにほしい情報を具体的に書きますと
「svn log -r 10:18 トランクURL」の場合には、15, 17のみ
「svn log -r 10:18 ブランチURL」の場合には、12, 14, 16のみ
となります。

トランクURLを指定した際にはブランチの履歴は出てほしくありません。
ブランチURLを指定した際にも指定したブランチ以外の情報が出ると困ります。

上記のコマンドでいけそうかなと思っています。
もしお気づきの点・アドバイス等ありましたら
追加でコメントよろしくお願いします。

補足日時:2010/09/22 14:50
    • good
    • 0
この回答へのお礼

> svn info タグのURL

これでとりあえず、質問の(2)に該当する、やりたかったことが実現できました。

開発者として単にリポジトリを使っている際には
CVNとそれほど大きくは変わらないと思っていました。
しかし最近、ライブラリアンとしてdiffやlogを駆使して
シェルを作ったりしなければならなくなり、そうなったときに
意外と差があることに(ようやく)気付き戸惑っていました。

大変助かりました。ありがとうございました。

お礼日時:2010/09/22 14:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!