Как выполнить поиск в журналах svn
Я хочу иметь возможность искать в журналах фиксации svn. Я знаю, что вы можете сделать это на tortoise, но не смогли найти способ с помощью командной строки.
мы переходим к двухуровневому подходу к хранилищу, так что стабильная ветвь будет получать только полностью завершенные и протестированные истории. Для этого нам понадобится способ поиска в сообщениях фиксации кода истории (например,#s1322) и получения списка ревизий, которые будут использоваться в последующем слиянии команда.
Ex: searchsvnapp http: / / [repo корень местоположения] #s1322
результат: 4233,4249,4313
5 ответов
для Subversion 1.8 естественным способом (tm) является использование новых опций --search
+ --search-and
журналы фильтрации
svn log --search #s1322 URL
и, кстати, каждая история может быть разделена на собственную ветку - в этом случае обнаружение ревизии-диапазон не требуется вообще, и вы просто объединяете ветку
во-первых, убедитесь, что у вас есть командная строка Subversion (collabnet-это дистрибутив, который я использую), который соответствует вашему выпуску Tortoise 'Subversion'. Установите флажок Tortoise about, чтобы найти версию Subversion. Каждый инструмент subversion имеет свою собственную копию клиента Subversion, и они не всегда взаимозаменяемы. Основные выпуски нарушат совместимость.
из командной строки:
журнал svn > svn.вон!--1-->
затем вставьте его в свой любимый редактор!
Я закончил разработку собственного инструмента, используя svnkit.
Ниже приведен основной бит кода, который выполняет поиск в журналах. Мне пришлось использовать " SVNWCUtil.createDefaultAuthenticationManager", используя временную папку, чтобы она не связывалась с конфигурацией svn инструмента cmd line 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;
}