Q
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日BOA
[+]表示合併修訂,[ - ] - 未合併。
10
我曾經寫過一個相當類似這樣做的網頁。不幸的是,我不能給你這個頁面,但我可以告訴你我做了什麼。
首先我們的開發模式 - 所有的開發都是針對主幹進行的,然後將修訂合併到不同版本的產品的各個發佈分支中。
我設置了一個網頁,每個版本的一列和每個中繼版本的一行。 通過爲每列運行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. 整合軌道軌跡2
- 2. 在軌道中合併記錄3
- 3. SVN - 合併不合並
- 4. 龜SVN合併
- 5. 的svn:合併
- 6. SmartGit合併SVN
- 7. 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合併併發症
- 24. SVN合併合併多餘的東西
- 25. 重做與SVN手動合併合併
- 26. svn合併中繼分支與svn合併中繼
- 27. 在做svn合併時忽略svn:「property」
- 28. 錯誤合併使用SVN
- 29. 合併多個SVN項目
- 30. 的svn:合併分支
你必須更具體一點,因爲「合併提交」的概念在Subversion中不起作用。 – balpha 2009-07-04 18:12:59
我有一個提交,必須在幾個分支合併。後來我想知道提交合並的分支(哪裏和哪個分支)。它以相反的方式工作(合併的提交顯示它的原點)。 – FoxyBOA 2009-07-04 18:15:23