
リビジョン指定でのSVNログ取得で、ファイルが削除されている場合の指定
SVNとCVSの違いで少しはまっています。
やりたいことは、リビジョンを指定しその間の変更ログの取得です。
CVSの場合は、対象としたいリビジョンの範囲で
追加・変更・削除の場合でそれぞれ以下のような指定で取得できました。
変更「cvs rlog -r100::200」
追加「cvs rlog -r::200」
削除「cvs rlog -r100::」
SVNの変更の場合は以下でうまくいきます。
「svn log -r 100:200」
しかし、削除があった場合には「構文エラー」となります。
以下のバリエーションを試しましたがダメでした。
「svn log -r 100:」「svn log -r 100」
「svn log -r 100:HEAD」「svn log -r 100:BASE」
「svn log -r 100:COMMITTED」「svn log -r 100:PREV」
途中での追加の場合は試していませんが、削除と同じ問題が
発生すると思っています。
削除・追加の場合のコマンドの表記方法、これを教えてください。
もしもSVNには上記の方法では情報を取得することが出来ない場合、
代替方法等あればそれを教えていただきたいです。
以上、よろしくお願いします。
背景を少し書いておきます。
2つのタグの間の差分を出力するシェルを作っています。
タグからリビジョン番号を取得し、そのリビジョンを使用して
svn diffを実行し、変更ファイルの一覧を取得する方法は成功しました。
で、ここから得られたリストを元に、各ファイルの
コミットコメントのログを取得したいと思っています。
なので、シェルの入力値は基本的には、2つのタグの文字列になります。
No.1ベストアンサー
- 回答日時:
>svn diffを実行し、変更ファイルの一覧を取得する方法は成功しました。
svn diff -r XXX:YYY --summarize URL
で変更リストの取得…でしょうか?
その場合、1文字目で追加/削除/変更は判定できますよね?
# ただ、どのリビジョンで追加/削除されたかまでは判りません。
# 他に方法あるかも知れませんけど。リビジョン1つずつ上げながらsvn diffとか…
追加の場合、追加前のリビジョンを指定すると…
svn log -r 40:43 URL
svn: Unable to find repository location for 'URL' in revision 43
となりますな。(Rev62で追加している場合)
まぁ、この場合はsvn diffで指定したリビジョン外なら出てこないので問題ないでしょうが…。
Rev42で削除しているモノだと…
svn log -r 40:43 URL
svn: File not found: revision 69, path '/trunk/Resource/XXXX.cpp'
となります。
コレでRev42(ファイル削除のみでコミット)のログを取りたいとすると……URLの指定にちょっとした細工が必要なようです。
1つ上のディレクトリを指定すると…
svn log -r 40:43 URL(ただしディレクトリ指定)
------------------------------------------------------------------------
r42 | username | 2007-08-05 22:06:00 +0900 (日, 05 8月 2007) | 1 line
不要ファイルの削除。
------------------------------------------------------------------------
こんなんなります。
ディレクトリ下の他のファイルに付いての変更も一緒に出てきますから…
削除されたファイル(svn diff --summarize で1文字目がDのファイル)で、
構文エラーになったときだけそのリビジョンと1つ上のディレクトリを指定してログ取得を行い、以降はそのファイルについてのログ取得は実施しない。
というやり方でどうでしょう?
ただ…これでもsvn moveされていた(移動していた/リネームされた)場合にどうするか…という問題がありますが。
# 手元のリポジトリ、軽く見てもリネームしたモノが無い。
# まぁ、テスト用のリポジトリ作って実験できなくはない…のですが、そこはご容赦を。
シェルスクリプトの複雑さがかなり増しそうですね…。
せっかくご回答いただいたのにお礼が遅れてしまい大変申し訳ありません。
教えていただいた方法で出来そうだなーと思いつつ
時間が無く取り掛かれずにいまだ試していません。
試行錯誤を行ないながら時間が出来たときに試してみたいと思います。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
svnでファイル移動すると履歴が...
-
tortoiseSVNについての質問です。
-
[SVN]Subversionリポジトリの容...
-
TortoiseSVNにおける削除ファイ...
-
Tortoise SVNでのファイルをア...
-
subversionの質問です。
-
TortoiseSVNでリポジトリURLの...
-
Subversionのリビジョン番号一...
-
ナレッジDB
-
RapidSVNの管理方法について
-
pre-commitでリビジョン番号を...
-
subversionでログを表示しよう...
-
svnadmin loadをするとエラーする
-
WEB制作におけるバージョン管理...
-
Subversionで日本語ファイル名...
-
彼女の過去の恋愛に嫉妬してし...
-
Excel: ファイル名になぜ、[...
-
エクセルのファイル:「自分」が...
-
CSVファイルの特定行の削除
-
Listviewに表示された文字のコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
svnでファイル移動すると履歴が...
-
[SVN]Subversionリポジトリの容...
-
TortoiseSVNでリポジトリURLの...
-
Subversionで日本語ファイル名...
-
TortoiseSVNにおける削除ファイ...
-
subversionでログを表示しよう...
-
Tortoise SVNでのファイルをア...
-
svnadmin loadをするとエラーする
-
Subversionのチェックアウトが...
-
Subversionのリビジョン番号一...
-
TortoiseSVN1.6.7でのhttps接続
-
SVNへ登録した際の「日時」につ...
-
SVNのアンロック
-
Subversionでチェックアウトが...
-
SVN 削除してしまったフォルダ...
-
".svn-base"という拡張子の追加...
-
リビジョン指定でのSVNログ取得...
-
svnリポジトリ内の一部のフォル...
-
「.svn」の隠しフォルダが勝手...
-
pre-commitでリビジョン番号を...
おすすめ情報