我希望能夠在svn的提交日誌中進行搜索。我知道你可以在烏龜身上做到這一點,但無法找到使用命令行的方式。如何在svn日誌中搜索
我們正在轉向兩層存儲庫方法,以便穩定分支只能完成並測試完整的故事。爲了實現這一點,我們需要一種在提交消息中搜索故事代碼的方法(例如:#s1322),並獲取後續合併命令中要使用的修訂列表。
例:searchsvnapp http://[repo位置根]#S1322
結果:4233,4249,4313
我希望能夠在svn的提交日誌中進行搜索。我知道你可以在烏龜身上做到這一點,但無法找到使用命令行的方式。如何在svn日誌中搜索
我們正在轉向兩層存儲庫方法,以便穩定分支只能完成並測試完整的故事。爲了實現這一點,我們需要一種在提交消息中搜索故事代碼的方法(例如:#s1322),並獲取後續合併命令中要使用的修訂列表。
例:searchsvnapp http://[repo位置根]#S1322
結果:4233,4249,4313
我最終開發了我自己的工具,使用svnkit。
下面是在日誌上搜索的代碼的主要位。我不得不使用「SVNWCUtil.createDefaultAuthenticationManager」使用臨時文件夾,這樣它就不會混淆與我應該運行該工具的相同框中的cmd行svn工具的svn配置。如果有足夠的興趣,我可以製作整個webtool開源。如果您有興趣,請讓我知道(對答案進行投票?)。
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;
}
這是不是工作?
svn log | grep "something"
首先,確保你有Subversion命令行(CollabNet的是我用的發行版),符合您的龜 '顛覆' 釋放。檢查「龜約盒」以查找Subversion版本。每個Subversion工具都有自己的Subversion客戶端副本,它們並不總是可以互換的。主要版本將打破兼容性。
在命令行:
SVN的日誌> svn.out
然後彈出它在你喜歡的編輯器!
我知道你可以做到這一點,但我期望的東西更直接...無論如何,我正在做一個快速的Web應用程序使用svnkit來搜索svn的代碼並返回正確的命令... – Emerson 2010-06-28 09:11:28
針對Subversion 1.8自然的方式(TM)是使用了新的選擇--search
+ --search-and
用於過濾日誌
svn log --search #s1322 URL
而且,順便說一句,每個故事可以分爲自己的分支機構 - 中這種情況下,根本不需要修訂範圍的檢測,您只需合併分支
這個例子中的#s1322和URL是什麼?都是搜索模式? – Exa 2014-11-04 08:00:04
@Exa - OP寫了「...在故事代碼的提交信息中搜索」。 URL不是模式,它是遠程回購的URL – 2014-11-06 04:02:28
我們的大多數開發人員都使用Windows並且沒有太多的UNIX知識。如果它是一個可以在任何平臺上使用的工具,那將是非常棒的。 – Emerson 2010-06-17 16:14:57
您可以在Windows上安裝Cygwin,並使用grep(以及其他很棒的'nix工具)。這甚至不是一個安裝的混亂;它是獨立的,你只需將它放在你的道路上。你會很高興你付出了努力。這可能非常有用。 – 2010-06-17 16:44:32
我在Windows環境中使用[GnuWin utils](http://gnuwin32.sourceforge.net/),所以操作系統在這裏不是問題。管道幾個簡單的程序是非常強大的概念,你應該學會有效地工作。 – chalup 2010-06-17 16:50:17