Получить версию SVN без соответствующего установленного двоичного файла SVN - PullRequest
2 голосов
/ 26 марта 2010

По некоторым причинам мы не можем обновить SVN на некоторых сборочных машинах. Установленная версия SVN 1.3.x. Но раб Гудзон использовал 1.6 для создания кассы. Это означает, что мы не можем запустить «svn info» для этих проверок:

$ svnversion 
subversion/libsvn_wc/questions.c:110: (apr_err=155021)
svn: This client is too old to work with working copy '.'; please get a newer Subversion client
$ svn info
subversion/libsvn_wc/questions.c:110: (apr_err=155021)
svn: This client is too old to work with working copy '.'; please get a newer Subversion client
$

Мой вопрос, есть ли способ получить доступ к номеру ревизии, не вызывая двоичный файл SVN? Вы знаете, как пытаться заглянуть в каталог .svn /? Предположим, что при оформлении заказа используется последняя версия SVN (1.6).

1 Ответ

1 голос
/ 26 марта 2010

Я нашел ответ на этот вопрос, посмотрев исходный код setuptools ( setuptools / command / egg_info.py )

        entries_file = join(dirname(__file__), '.svn', 'entries')
        assert exists(entries_file), '%s is missing' % entries_file
        with open(entries_file) as f:
            data = f.read()
            # parsing code inherited from setuptools/command/egg_info.py
            if data.startswith('<?xml'):
                localrev = max([int(m.group(1)) for m in revre.finditer(data)]+[0])
            else:
                if data<8:
                    raise Exception, "unrecognized .svn/entries format"

                data = map(str.splitlines,data.split('\n\x0c\n'))
                del data[0][0]  # get rid of the '8' or '9'
                localrev = max([int(d[9]) for d in data if len(d)>9 and d[9]]+[0])
...