Git SVN как костыль для SVN слияния бед - PullRequest
2 голосов
/ 08 марта 2011

Рассмотрим svn-репозиторий с ветвями, которые не обязательно расположены в обычном макете ствола / тегов / веток.Я хочу убедить git-svn взять две из этих веток на борту, плюс все остальное, что ему нужно, чтобы я мог использовать git как инструмент слияния, чтобы избежать различных уровней хека, которые преследуют нас слиянием svn.Если ветви все в одном месте, есть --branches, но есть ли способ, если их нет?

1 Ответ

3 голосов
/ 08 марта 2011

Сделайте git svn init ROOT_URL, затем войдите и отредактируйте .git/config, чтобы добавить дополнительные fetch строки:

[svn-remote "svn"]
   url = https://svn.mcs.anl.gov/repos/mpi
   fetch = mpich2/trunk:refs/remotes/trunk
   fetch = mpich2/branches/dev/threads:refs/remotes/threads
   fetch = mpich2/branches/dev/knem:refs/remotes/knem
   fetch = mpich2/branches/release/MPICH2_1_0_8:refs/remotes/mpich2-1.0.8

Тогда git fetch, и вы должны получить все ветви, явно перечисленные в вашем конфигурационном файле.

Имейте в виду, однако, что вы, возможно, не захотите осуществлять слияние извне через git-svn. Git не будет поддерживать для вас свойства svn:mergeinfo, что сделает возврат к собственному рабочему процессу слияния на основе SVN практически невозможным. Вы также можете немного запутать git-svn, выбирая или объединяя код, который уже был добавлен в реальное хранилище SVN, так как он ищет git-svn-id: «хлебные крошки» в сообщениях фиксации, чтобы выяснить, какой путь SVN следует использовать для git svn dcommit. Дополнительную информацию об этом смотрите в разделе CAVEATS справочной страницы git-svn.

FWIW, я также разместил об этом в более длинной форме на моем собственном сайте .

...