Как найти хэш версии Git в синхронизированном репозитории SVN с помощью SubGit?

В процессе перехода с SVN на git мы оцениваем Плагин SVN Mirror Stash (SubGit) в Stash.

Одно из наших требований заключается в том, чтобы хэш версии git был доступен в репозитории SVN либо в пользовательском revprop, либо в сообщении журнала в формате JSON.

По сути, я пытаюсь сделать обратное тому, что описано в этот вопрос .

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


person Brilliantnut    schedule 08.06.2015    source источник


Ответы (1)


Просто краткое резюме после обсуждения этой проблемы между @Brilliantnut и [email protected]:

Наша команда решила поддерживать особый тип свойств ревизии, которые хранят метаданные соответствующей фиксации Git: автор, коммиттер, временная метка, идентификатор фиксации и т. д.

Я обновлю этот ответ, как только мы опубликуем новую сборку с этой реализованной функцией.

Обновлять:

Чтобы установить определенные свойства ревизии Git в репозитории Subversion, настройте файл конфигурации SubGit следующим образом:

$ edit GIT_REPO/subgit/config

[svn]
    ...
    revisionProperties = committer, author, date, log, commit
    ...

а затем запустите subgit install, чтобы активировать это обновление конфигурации:

$ subgit install GIT_REPO

После этого SubGit устанавливает следующие свойства для каждой ревизии, которую он конвертирует из Git в SVN:

subgit:committer="Git Committer <[email protected]>"
subgit:author="Git Author <[email protected]>"
subgit:date="2015-06-10 16:46:01 +0400"
subgit:log="fix foo"
subgit:commit=9039c430e12d25c3ef250c8e49c4a57877c36343

Вы также можете выбрать, какие свойства установить, настроив параметр конфигурации:

[svn]
    ...
    revisionProperties = date, log, commit
    ...

Для этой функции существуют следующие ограничения:

  1. subgit:* свойства ревизии не устанавливаются для тех ревизий, которые были зафиксированы пользователями SVN и не преобразованы из коммитов Git с помощью SubGit;

  2. Если кто-то добавляет/удаляет новую ветку или тег Git в фиксации, которая уже синхронизирована с репозиторием SVN, SubGit создает новую ревизию SVN, для которой не заданы свойства subgit:*.

person vadishev    schedule 10.06.2015