我希望能够在svn的提交日志中进行搜索。我知道你可以在乌龟身上做到这一点,但是找不到使用命令行的方法。
我们正在采用双层存储库方法,因此稳定分支只能完成故事并进行测试。为了实现这一点,我们需要一种方法在提交消息中搜索故事代码(例如:#s1322)并获取要在后续合并命令中使用的修订列表。
Ex:searchsvnapp http://[repo location root]#s1322
结果:4233,4249,4313
答案 0 :(得分:8)
对于Subversion 1.8自然方式(tm)是使用新选项--search
+ --search-and
来过滤日志
svn log --search #s1322 URL
而且,顺便说一下,每个故事都可以分成自己的分支 - 在这种情况下,根本不需要检测修订范围,你只需合并分支
答案 1 :(得分:6)
这不会起作用吗?
svn log | grep "something"
答案 2 :(得分:3)
Windows版本的the_void的回答:
svn log | find "something"
答案 3 :(得分:1)
首先,确保你有与你的Tortoise'Subversion'版本相匹配的Subversion命令行(collabnet是我使用的发行版)。在Tortoise中查看框以查找Subversion修订版。每个subversion工具都有自己的Subversion客户端副本,并且它们并不总是可以互换的。主要版本将破坏兼容性。
从命令行:
svn log> svn.out
然后在你喜欢的编辑器中弹出它!
答案 4 :(得分:1)
我最终使用svnkit开发了自己的工具。
下面是搜索日志的代码的主要部分。我不得不使用临时文件夹使用“SVNWCUtil.createDefaultAuthenticationManager”,这样就不会弄乱我应该运行该工具的同一个框中的cmd line svn工具的svn配置。如果有足够的兴趣,我可以制作整个webtool opensource。如果您有兴趣,请告诉我(对答案投票可能?)
public Collection<SVNLogEntry> searchSVN(String url, String name,
String password, long startRevision, long endRevision,
String searchTerm, String svnUser) throws Exception {
DAVRepositoryFactory.setup();
SVNRepository repository = null;
repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
// changed the config folder to avoid conflicting with anthill svn use
ISVNAuthenticationManager authManager = SVNWCUtil
.createDefaultAuthenticationManager(new File("/tmp"), name,
password, false);
repository.setAuthenticationManager(authManager);
Collection<SVNLogEntry> resultLogEntries = new LinkedList();
Collection<SVNLogEntry> logEntries = repository.log(
new String[] { "" }, null, startRevision, endRevision, true,
true);
for (SVNLogEntry svnLogEntry : logEntries) {
if (svnLogEntry.getMessage().indexOf(searchTerm) > -1) {
if ((svnUser == null || svnUser.equals(""))
|| svnLogEntry.getAuthor().equals(svnUser)) {
resultLogEntries.add(svnLogEntry);
}
}
}
return resultLogEntries;
}