2016-03-22 3 views
0

Я попытался получить имя автора для файла, который выполняется в SVN. Я знаю, что код должен быть записан в pre-commit hook.Получить имя автора файла, которое выполняется в SVN

Нижеприведенные команды используются для получения сведений о только что зафиксированных файлах, а не о файле, который выполняется.

  1. SVN информация "Repos_Path"
  2. svnlook автор "repos_path"

Я не могу даже получить номер версии для файла, который совершается. Если я могу получить номер ревизии, я могу получить имя автора.

Итак, есть ли возможный способ получить имя автора или номер версии файла, который выполняется?

ответ

0

Вместо того, чтобы писать код в pre-commit, у меня есть код в start-commit hook. В котором мы можем получить четыре аргумента, как показано ниже:

[1] REPOS-PATH (the path to this repository) 
    [2] USER   (the authenticated user attempting to commit) 
    [3] CAPABILITIES (a colon-separated list of capabilities reported 
        by the client; see note below) 
    [4] TXN-NAME  (the name of the commit txn just created 

Наконец, я получил этот самый простой ответ.

1

Прежде всего, вы должны прочитать SVNBook | Implementing Repository Hooks. Раздел должен ответить на все ваши вопросы. Прочтите внимательно, пожалуйста.

В сценариях крюка вы должны использовать команду svnlook author. Критический сценарий перехвата передает идентификатор транзакции (TXN-NAME) в качестве параметра% 2 и пути репозитория в качестве параметра% 1. Поэтому, чтобы уловить имя автора транзакции, подлежащей совершению, используйте команду svnlook author "%1" --transaction %2.

Read SVNBook!

Edit:

Вы говорите, что «Это не показывают какие-либо исключений и не дает никакого выходные данные» и это полностью ожидается, только потому, что транзакция генерируются в процессе commit и, если фиксация принята и завершена успешно, Subversion создаст новую ревизию на основе этой транзакции. Указанный образец команды должен быть скорректирован и использован в сценарии hook.

Если вы просто хотите протестировать команду, используйте --revision вместо --transaction. Например, запустите команду svnlook author <REPOS-PATH> --revision REVNUM. REVNUM = любой номер версии в репозитории.

+0

Указанная выше команда не работает для меня. –

+0

@ KathirSubramaniam вам следует выяснить, почему он не работает. – bahrep

+0

Он не показывает никаких исключений и не дает никакого вывода. поэтому я не могу исследовать основную причину. –