SVN 1.6では、コミットがマージされた場所を追跡できますか?私はUIベースのソリューションで特に興味深いです(Eclipseプラグインは素晴らしいでしょう)。SVN:トラックマージ
1
A
答えて
1
ありがとうございます(derobertとJim Tに感謝します)。私は、私が必要としていることを行うsvnkit 1.2.xを使って私自身のコードを書いています。
private static void showMergedRevision(String pFromUrl, String pToUrl) throws SVNException {
List<String> folders= new ArrayList<String>();
folders.add("Folder1");
...
SVNRepositoryFactoryImpl.setup();
String name="user";
String password="password";
ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(name, password);
SVNClientManager ourClientManager = SVNClientManager.newInstance(options , authManager);
final Set<Long> mergedRevision = new HashSet<Long>();
for(String folder : folders){
SVNURL svnFrom = SVNURL.parseURIDecoded(pFromUrl + "/" + folder);
SVNURL svnTo = SVNURL.parseURIDecoded(pToUrl+ "/" + folder);
ISVNLogEntryHandler mergedLogger = new ISVNLogEntryHandler() {
public void handleLogEntry(SVNLogEntry pParamSVNLogEntry) throws SVNException {
mergedRevision.add(pParamSVNLogEntry.getRevision());
}
};
ourClientManager.getDiffClient().doGetLogMergedMergeInfo(svnTo, SVNRevision.HEAD, svnFrom, SVNRevision.HEAD, false, null, mergedLogger);
}
System.out.println(String.format("Tracking merges from [%s] to [%s].", pFromUrl, pToUrl));
System.out.println("Comparing folders: " + folders);
SVNURL svnUrlorg = SVNURL.parseURIDecoded(pFromUrl);
ISVNLogEntryHandler histroyLogger= new ISVNLogEntryHandler() {
public void handleLogEntry(SVNLogEntry pParamSVNLogEntry) throws SVNException {
if (pParamSVNLogEntry.getRevision() < 0){
// Sometimes got -1 null null null values. Skip them
return;
}
final boolean merged = mergedRevision.contains(pParamSVNLogEntry.getRevision());
System.out.println(String.format("%s %s: %s %s %s", merged ? "[+]": "[-]",
pParamSVNLogEntry.getRevision(),
pParamSVNLogEntry.getAuthor(), pParamSVNLogEntry.getDate(),
pParamSVNLogEntry.getMessage()));
}
};
ourClientManager.getLogClient().doLog(svnUrlorg, null, SVNRevision.HEAD, SVNRevision.create(0), SVNRevision.HEAD, true, false, false, -1, null, histroyLogger);
}
出力は次のようになります
[ - ] 7210:ボア2009年3月7日
[ - ] 7211:ボア2009年3月7日
[+] 7215:ボア2009年3月7日
[+]は、マージされたリビジョン、[ - ] - unmergedを意味します。
10
私はかつてこのようなかなりのWebページを書いていました。私は残念ながら、あなたにページを与えることはできませんが、私はあなたに私がしたことのアイデアを与えることができます。
最初に私たちの開発モデル - すべての開発をトランクにして、リビジョンをさまざまなバージョンの製品のさまざまなリリースブランチにマージします。
各バージョンの列と各トランクリビジョンの行を持つWebページを設定しました。 各列に対してsvn mergeinfoを実行すると、そのバージョンにマージされたトランクリビジョンのリストが返されました。
私たちは、これらの機能比較リストと非常によく似たものになりました。対応するトランクコミットを含む各バージョンの黒い点を示す表です。
は少しこのように見えた:
rev | ver1 | ver1.1 | ver2 | ver2.1 |
200 | | | | X |
198 | | X | | X |
177 | | | | X |
176 | | | X | X |
157 | X | X | X | X |
146 | X | X | X | X |
122 | X | X | X | X |
075 | X | X | X | X |
を。これは、任意のリビジョンが別の場所にマージされますがされていない場合、私たちは(テスト用に便利)の各バージョンが含まれている正確に何を見るだけでなく、強調してみましょう。
2
Eclipseプラグインを使用する場合は、Subclipseを試してみてください。それは本当に使いやすく、競合するファイルやブランチ、マージブランチなどをマージする際にとても役に立ちました。 ここにいくつかはscreenshotsです。
関連する問題
- 1. svn copy .... svn:
- 2. SVN - '!/ SVN/[レポ名]/SVN /私' へのアクセス
- 3. SVNリポジトリ内のSVNリポジトリ?
- 4. SVN
- 5. git-svn svnブランチからsvnブランチを作成する
- 6. svn-gitを使用したSVNレプリケーション
- 7. git-svnをSVNリポジトリに変更する
- 8. SVNプリコミットフックエラー
- 9. のsvn:
- 10. svnコミットエラー
- 11. SVN +ロックエラー
- 12. SVNリモートリポジトリ
- 13. SVNアクセス
- 14. SVNは
- 15. SVNレプリケートディレクトリ
- 16. SVNレポ
- 17. SVNチェックインタイムスタンプ
- 18. SVNクライアントチェックアウトエラー
- 19. はSVN
- 20. SVNポストコミットフックバッチウィンドウ
- 21. SVNブランチレベルコミットパーミッション
- 22. SVNリビジョングラフ
- 23. は、svn update、svn delete、svn importを行うためのシェルスクリプトが必要です
- 24. Tortoise SVN + Unreal Commander
- 25. SVNレイアウト - ベストプラクティス
- 26. は、SVN更新
- 27. SVNとGitの
- 28. Eclipse svn ignore bin
- 29. SourceforgeとSVN
- 30. Jenkins svn connection refused
「コミットをマージする」という概念は、サブバージョンでは100%機能しないため、少し具体的にする必要があります。 – balpha
私はカップルブランチでマージする必要があるコミットを持っています。後で私は、コミットがどのブランチ(どこと誰)がマージされたかを知りたい。これは反対の方法で動作します(マージされたコミットはその起源を示します)。 – FoxyBOA
SVNとのマージとマージの難しさは、私たちがP4に切り替えた理由です。あなたの最善の策は、リポジトリ全体の変更された行のgrepだけで、それがどのブランチに表示されるかを確認することです。 –