SVN:轨道合并 [英] SVN: Track merges
本文介绍了SVN:轨道合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在 SVN 1.6 中是否可以跟踪提交的合并位置.我对基于 UI 的解决方案特别感兴趣(Eclipse 插件会很棒).
Is it possible in SVN 1.6 to track where a commit was merged. I'm especially interesting in UI based solution (Eclipse plugin will be great).
推荐答案
感谢所有回答的人(特别感谢 derobert 和 Jim T).我使用 svnkit 1.2.x 编写自己的代码,可以满足我的需求.
Thank you for all answered person (special thanks to derobert and Jim T). I write my own code using svnkit 1.2.x that do what I exactly need.
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:蟒蛇 03.07.2009
[-] 7211:蟒蛇 03.07.2009
[+] 7215:蟒蛇 03.07.2009
[-] 7210: boa 03.07.2009
[-] 7211: boa 03.07.2009
[+] 7215: boa 03.07.2009
[+] 表示合并修订,[-] - 未合并.
[+] means merged revision, [-] - unmerged.
这篇关于SVN:轨道合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文