Как выполнить поиск в журналах 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

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


не работает?

svn log | grep "something"

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

svn log | find "something"

во-первых, убедитесь, что у вас есть командная строка 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;
}