pom.xml に変更が加えられた Subversion ダンプ内のすべてのリビジョンを見つける必要があります。
私はsvndumptoolを使用してリビジョンを正常に出力し、sed を使用してそれらの調査結果をフィルタリングしています。
リビジョン番号を開始として一致させることはできますが、停止を見つける前に2番目の一致する開始を見つけた場合、これを破棄できる必要があります。
これが私が使用しているコマンドです:
svnDumpTool=~/path/to/svndumptool.py
target=specificSvn.dump
# use svndumptool to read the svnlog from target to stdin |
# sed then matches start -r[0-9], such as -r103, ends on pom.xml
# then redirects stdout > to a log file for this target
$svnDumpTool log $target -v | sed -n '/r[0-9]/,/pom.xml/p' > $target.log
次のようなログを検討します。
-r0 | ... | ...
Changed paths:
none; initialization of the repo; not my match
-r1 | ... | ...
Changed paths:
... not my matches here
--------
-r2 | ... | ...
Changed paths:
... nor here
--------
-r3 | ... | ...
Changed paths:
pom.xml
--------
-r4 | ... | ...
Changed paths:
pom.xml
--------
-r5 | ... | ...
Changed paths:
... changes may or may not be here
--------
これが結果です。
最初のパスでは、必要以上のものを取得します。
- -r0 の開始時に一致します。
- -r3 からの pom.xml の末尾の一致、
-r0、-r1、-r2を含む、最初から最後まですべてを出力します。
-r0 | ... | ... Changed paths: none; initialization of the repo; not my match -r1 | ... | ... Changed paths: ... not my matches here -------- -r2 | ... | ... Changed paths: ... nor here -------- -r3 | ... | ... Changed paths: pom.xml
2回目のパスで、私が望むものを正確に取得します:
- -r4 の開始時に一致します。
-r4 からの pom.xml の末尾の一致:
-r4 | ... | ... Changed paths: pom.xml
だから、私がする必要があると思うのは:
- きっかけを見つけたら、
- そして、末尾に一致する式を見つける前に、開始に一致する別の式を見つけます。
- 次に、最初のスタートを捨てます。それ以外の場合は印刷します。
この投稿に答えがあると思いますが、私が試した試みはすべて失敗しました。
編集:自動修正でわかりました。出力を「pom.xml」にする必要があるのに、誤って「Pom.xml」としてリストしました。