Рабочий процесс использования Git SVN и удаленного репозитория Git с несколькими пользователями

Резюме вопроса:

Когда я писал это, я понял, что здесь много деталей, поэтому вот заголовок:

  • Каков хороший рабочий процесс для команды из многих пользователей, которые используют SVN и Git SVN в рабочей среде, но затем также хотят использовать удаленный репозиторий Git (BitBucket )для доступа к тому же коду извне рабочей среды., обмениваться изменениями в этом коде друг с другом, находясь вне офиса, а затем безопасно перебазировать обратно в SVN, когда вернетесь в офис? В то время как другие продолжают использовать Git SVN локально в офисе?

При написании этого я также понял, что то, что я прошу сделать, на самом деле довольно сложно и может быть просто невозможно...

Деталь:

Я работаю с командой людей, использующих репозиторий SVN. Некоторые из нас начали использовать Git SVN и теперь пожинают плоды использования Git локально, разветвляясь по своему усмотрению, сливаясь с нашими локальными мастерами по мере необходимости, а затем возвращаясь обратно в SVN. Это хорошо работает (, хотя я понимаю, что мы не пользуемся всеми преимуществами чистого решения Git ).

Недавно я начал использовать частный репозиторий BitBucket Git в качестве удаленного для Мастера, поэтому я могу легко переносить код в другие места и из них. Рабочий процесс таков:

  • На работе выполните Rebase из SVN Trunk => Local Work Master.
  • Нажмите из Local Work Master => BitBucket Master.
  • Дома вытащите из BitBucket Master => Local Home Master.
  • Пишите дома, разветвляйте, объединяйте, наслаждайтесь git.
  • Слияние из локальных домашних веток => Локальный домашний мастер.
  • Push from Local Home Master => BitBucket Master.
  • На работе,вытащить из BitBucket Master в Local Work Master.
  • Перебазируйте SVN Trunk.
  • Dcommit в SVN.

Хорошо, есть несколько шагов, но это работает хорошо для меня. Но некоторые мои коллеги хотят начать делать то же самое. Более того, мы хотим иметь возможность использовать наш репозиторий BitBucket Git без обременительного SVN.

Некоторые примеры вещей, которые мы рассматриваем:

  • Если один из нас находится вне офиса, он хочет иметь возможность получить последний код. На работе я могу выполнить перебазирование из SVN, а затем передать его в BitBucket, сделав последний код доступным для моего коллеги.
  • Если двое из нас хотят поделиться некоторыми изменениями (, предполагая, что один или оба из нас находятся вне офиса ), мы можем создать для этого функциональную ветку на BitBucket и каждый раз отправлять и получать ее по мере необходимости.
  • Когда мы довольны этим, один из нас может объединить его с нашим локальным домашним мастером, а затем отправить в BitBucket Master, готовый к извлечению, когда мы вернемся к работе.
  • Вернувшись на работу, один из нас может вытащить Master из BitBucket в наш Local Work Master, а затем выполнить перебазирование в SVN и dcommit, как обычно.

Но если это сделал один из нас, что тогда произойдет с остальной командой? Если они возьмут данные из BitBucket Master, они получат изменения. Но если они перебазируются из SVN, они тоже получат изменения.

Что произойдет, если они сделают и то, и другое? И это только одна возможная загвоздка. Я могу придумать другие наборы шагов, если бы все это могло привести к настоящей неразберихе.

К сожалению, наш рабочий процесс непрерывной интеграции привязан к SVN, как и весь остальной бизнес. Поэтому у нас нет возможности полностью перейти на Git. Мы также не можем получить доступ к нашему репозиторию SVN из-за пределов компании.

5
задан Holf 14 July 2012 в 12:58
поделиться