Автоматическая синхронизация репозитория Subversion и репозитория Git

У моего проекта есть репозиторий Subversion в сетевой файловой системе, и новая команда хотела бы получить к нему доступ с помощью Git и иметь возможность фиксировать его и получать от него обновления.

Я хочу создать новый голый git-svn клон репозитория Subversion в той же сетевой файловой системе и убедиться, что два репозитория всегда обновлены по каждому Другие.

Вероятно, способ сделать это - добавить ловушку после фиксации как для Subversion, так и для нового репозитория Git, каждый из которых будет обновлять репозиторий другого.

Хук после фиксации Subversion будет включать git svn rebase и Git-один git svn dcommit .

Проблема в том, что мне придется использовать какую-то блокировку, чтобы убедиться, что никто не фиксирует ни один репозиторий, в то время как другой также фиксируется, потому что они всегда должны быть синхронизированы перед любой фиксацией. У этого есть несколько недостатков, в том числе время, необходимое для фиксации в Subversion или отправки в репозиторий Git (необходимо дождаться завершения ловушки), а также тот факт, что некоторые пользователи могут не работать git svn (потому что он не установлен на их машине), что означает, что они не могут обновить другой репозиторий при фиксации / отправке.

Как я могу решить эти проблемы? Как будут выглядеть хуки Subversion и Git?

6
задан Daniel Hershcovich 7 April 2011 в 20:09
поделиться