2010-07-06 3 views
5

У меня есть репозиторий svn (без структуры TLB, если это имеет значение), который я хочу использовать вместе с git. Я могу сделать клон git-svn, работать над моими изменениями в git repo и возвращаться к svn repo всякий раз, когда я это делаю. Это ясно до этого момента.Использование git и svn с несколькими разработчиками

Я не уверен, как расширить эту модель рабочего процесса до нескольких разработчиков. Мне нужна моя команда разработчиков, чтобы иметь возможность работать с единственным git-репо (клонированным из svn-репо), которое должно вести себя как нормальное git-репо для всех нас. В какой-то момент любой разработчик должен иметь возможность возвратиться к репозиторию svn. Это возможно? Благодарю.

ответ

1

У нас была та же проблема, и мы не нашли способ сделать это, поэтому переходим к полному git. Все работает нормально, если только один репо общается с svn, но в противном случае это становится беспорядочным. Что происходит в ветке git-svn имеет свою собственную жизнь

Вы можете просто попробовать это
- создать для repo git1 и git2 от svn.
- внести изменения в мерзавца 1 и dcommit к Svn
- тянуть INT git2, сделать мерзавец SVN перебазироваться и посмотреть, что происходит ...

при попытке вытащить его в git2, вы должны создайте новую ветку, начинающуюся с svn, но она не отслеживает ее. Так что git2 имеет в основном 2 ветки svn one и git1. Поэтому, прежде чем удалять что-либо из git2 в svn, вы должны объединить еду ветку git1 в svn (даже если они идентичны). (Возможно, я ошибаюсь, потому что я сделал это некоторое время назад и, возможно, есть решение)

В любом случае, я должен был это сделать пару раз, потому что, когда мы переключились с 'git-svn' на 'git' , мы создали центральный git-репозиторий, прежде чем все закончили, чтобы dcommit свою собственную вещь svn. Тогда я должен был выбрать новый материал из svn, чтобы вернуть их в новый репозиторий git, и это было действительно большой беспорядок.

Так что либо используйте только git, либо имеете только одно репо, связанное с svn.

+0

Это самый беспроблемный подход в моем опыте. –

1

Я смотрю на это так, мой рекомендую путь является

  • использовать мастер для синхронизации с репозиторием SVN и специальные названия филиалов отслеживать другие ветви СВН, как walko филиал в SVN, то в мерзавца, его is walko-svn
  • использовать другие имена для синхронизации с репозиторием git.

alt text http://larrycai.files.wordpress.com/2013/02/image2.png

Затем путь разработок являются

  • все дизайнеры синхронизации из репозитория SVN на GIT-SVN клон ..., используя мастер и филиал-Svn имя
  • все дизайнеры также синхронизацию с репозиторием мерзавца, но держать выше имени ветви для СВН
  • все дизайнеры используют в основном репозиторий для совместной разработки, как тема отрасли
  • , когда ветка темы кажется хорошей, каждый дизайнер может вернуться к мастер-ветке, этот конструктор должен dcommit в репозиторий svn и после него (получите git-svn-id), они также отбрасываются обратно в git-репозиторий. (Эта работа может быть сделано автоматически, если установлен триггер СВН)
  • то мерзавец хранилище всегда синхронизируются с SVN репо на основной ветке

Резюме

  • хранилищу использование Git для совместной работы над не-Svn отрасли (как мастер)
  • перебазирования обратно в хранилище SVN из не-Svn ветви
  • всегда держать GIT репозиторий (мастер) синхронизации с SVN репо

посмотреть мой блог с фотографиями http://larrycaiyu.com/blog/2010/07/10/svn-git-integration-1/

0

Нашей команды была точно такой же проблемой, и после небольшого количества экспериментов нам удалось придумать два-полосную ГИТ-Subversion моста, который синхронизирует изменения между репозиторием команды мерзавца и корпоративный репозиторий Subversion. См. Мой ответ на https://stackoverflow.com/a/12155474/258772 или посмотрите на https://github.com/mrts/git-svn-bridge