Как искать в логах SVN - PullRequest
       19

Как искать в логах SVN

6 голосов
/ 17 июня 2010

Я хочу иметь возможность искать в журналах фиксации SVN.Я знаю, что вы можете сделать это на черепахе, но не смог найти способ с помощью командной строки.

Мы переходим к двухуровневому подходу к хранилищу, так что стабильная ветвь будет получать только полностью завершенные и протестированные истории.Для этого нам нужен способ поиска в сообщениях коммита кода истории (например: # s1322) и получения списка ревизий, которые будут использоваться в последующей команде слияния.

Пример: searchsvnapphttp://[repo местоположение корня] # s1322

результат: 4233,4249,4313

Ответы [ 5 ]

8 голосов
/ 27 июня 2013

Для Subversion 1.8. Естественный путь (tm) - использовать новые опции --search + --search-and для фильтрации журналов

svn log --search #s1322 URL

И, кстати, каждая история может быть разделена на собственную ветку - в этом случае определение диапазона ревизий вообще не требуется, и вы просто объединяете ветку

6 голосов
/ 17 июня 2010

Разве это не сработает?

svn log | grep "something"
3 голосов
/ 17 июня 2010

Windows-версия ответа the_void:

svn log | find "something"
1 голос
/ 19 августа 2010

Я закончил разработку своего собственного инструмента, используя svnkit .

Далее приведен основной бит кода, который ищет в журналах. Мне пришлось использовать «SVNWCUtil.createDefaultAuthenticationManager», используя временную папку, чтобы она не мешала конфигурации svn инструмента cmd line svn, который у меня есть в том же окне, где должен запускаться инструмент. Если есть достаточно интереса, я могу сделать весь веб-инструмент с открытым исходным кодом. Пожалуйста, дайте мне знать (возможно, проголосуете за ответ?), Если вы заинтересованы.

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;
}
1 голос
/ 17 июня 2010

Во-первых, убедитесь, что у вас есть командная строка Subversion (Collabnet - это дистрибутив, который я использую), который соответствует вашей версии 'Subversion'.Установите флажок «Черепаха о», чтобы найти ревизию Subversion.Каждый инструмент Subversion имеет свою собственную копию клиента Subversion, и они не всегда взаимозаменяемы.Основные выпуски нарушат совместимость.

Из командной строки:

svn log> svn.out

Затем откройте его в своем любимом редакторе!

...