2010-10-04 1 views
3

A git svn clone с --stdlayout получить несколько ветвей, если источник SVN repo имеет несколько ветвей (и тегов).git и git-svn и несколько ветвей и push и fetch

Я хочу нажать все из них в другой git repo. Кажется, что git svn clone получил всю историю для всех версий. Это вопрос предоставления лучших инструкций для git push?

Вот мой, возможно, ошибочный рабочий процесс.

  1. Запуск git svn для клонирования svn в частном репо.
  2. толчок его общая репо управляется с Gitosis
  3. сделать КОЛЛЕКТИВНУЮ рабочую ветвь
  4. различных людей Gitosis управляемого Репо, делает частные ветви, и сливается в совместно работа филиал.
  5. Я вытаскиваю из общего репо обратно в тот, который я создал на шаге 1, сливаясь с trunk и dcommit.

Вот результат git branch -a после запуска git svn clone.

/Users/benson/x/tsk/tsk_git_svn git branch -a 
* master 
    remotes/origin/master 
    remotes/sleuthkit-3.0 
    remotes/sleuthkit-3.1 
    remotes/tags/sleuthkit-3.0.0 
    remotes/tags/sleuthkit-3.0.1 
    remotes/tags/sleuthkit-3.1.0 
    remotes/tags/sleuthkit-3.1.0b1 
    remotes/tags/sleuthkit-3.1.1 
    remotes/tags/sleuthkit-3.1.2 
    remotes/tags/sleuthkit-3.1.3 
    remotes/tags/sleuthkit-3.1.3b1 
    remotes/tags/sleuthkit-3.2.0b1 
    remotes/tags/sleuthkit-3.2.0b2 
    remotes/trunk 

ответ

2

вы можете попробовать git push --mirror, чтобы быть уверенным, чтобы подтолкнуть все ссылки из одного мерзавца репо на другой:

из git push:

--mirror 

Вместо того, чтобы называть каждый реф к push, указывает, что все ссылки под номером refs/ (который включает, но не ограничивается ими, refs/heads/, refs/remotes/ и refs/tags/) зеркалируются в удаленном репозитории.
Новые локальные ссылки будут перенаправлены на удаленный конец, локально обновленные ссылки будут обновлены на удаленном конце, и удаленные ссылки будут удалены с удаленного конца.

Но я бы recommend svn2git (если вы не планируете регулярно обновлять SVN репо), для того, чтобы получить фактические теги вместо «ветвей» для тегов.

+0

спасибо большое. Запуск push -mirror показывает признаки всего этого. Но git clone на результирующем репо не показывает их в результатах. – bmargulies

+0

@bmargulies: Когда вы 'push -mirror' от' gitRepo1' до 'gitRepo2', вы должны получить все на' Repo2'. Но зачем вам клонировать 'gitRepo2'? Или вы имели в виду git clone the first repo (тот, который вы должны попробовать «push -mirror»)? – VonC

+0

Я отредактировал, чтобы уточнить мои, возможно, глупые планы. Я также посмотрю на ваш альтернативный инструмент. – bmargulies

0

Если у вас есть доступ к SVN-серверу, я бы рекомендовал 2 шага решения:

$ subgit install path/to/svn/repository 
$ cd path/to/svn/repository 
$ git push --all <target Git repository> 

Обратите внимание, что цель Git репозиторий должен быть голым, чтобы избежать проблем (созданные командой мерзавец инициализации --bare)

Смежные вопросы