Использование git и svn с несколькими разработчиками - PullRequest
5 голосов
/ 06 июля 2010

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

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

Ответы [ 3 ]

1 голос
/ 21 июля 2010

Я также смотрю на это, мой рекомендуемый способ:

  • использовать master для синхронизации с репозиторием svn и специальными именами веток для отслеживания других веток svn, таких как ветка walko в svn, затем в git, это walko-svn
  • использовать другие имена для синхронизации с репозиторием git.

альтернативный текст http://larrycai.files.wordpress.com/2013/02/image2.png

Тогда способ работы

  • все дизайнеры синхронизируются из репозитория svn с помощью git-svn clone ... , используя master и branch-svn name
  • все дизайнеры также имеют синхронизацию с репозиторием git, но держите выше имя ветки для svn
  • все дизайнеры в основном используют репозиторий git для совместной разработки, как ветка темы
  • , когда ветка темы кажется хорошей, каждыйдизайнеры могут перебазироваться обратно в ветку master, этот конструктор должен dcommit в репозиторий svn и после него (get git-svn-id ) они также возвращаются в репозиторий git.(эта работа может быть выполнена автоматически, если установлен триггер svn)
  • , тогда репозиторий git всегда синхронизируется с репозиторием svn в основной ветке

Summary

  • usegit-репозиторий для совместной работы в ветке non-svn (например, master)
  • ребаз в репозиторий svn из ветки non-svn
  • всегда поддерживает синхронизацию git repo (master) с svn repo

см. Мой блог с картинками http://larrycaiyu.com/blog/2010/07/10/svn-git-integration-1/

1 голос
/ 06 июля 2010

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

Вы можете просто попробовать это
- создать репо git1 и git2 из svn.
- внести изменения в git 1 и dcommit в svn
- потяните его в git2, сделайте git svn rebase и посмотрите, что происходит ...

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

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

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

0 голосов
/ 27 августа 2012

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

...