2009-11-17 2 views
2

Я прочесал сеть и много нашел о работе с git-svn и ветвями, но ничего, что соответствует моей ситуации.git-svn и большой проект

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

Все, что я хочу сделать, это слияние изменений с одного SVN-репо на другое с помощью git-svn, но я не нашел способ сделать это из Google или git-svn docs. Я обрабатываю это в svn, поддерживая отдельный svn checkout его собственный каталог для каждой ветви и просто использую команду merge для вытягивания изменений. Я ожидал, что смогу сделать что-то подобное с помощью git-svn, но я не нашел способ извлечь изменения из другой ветки svn. Есть ли способ сделать это?

+0

Кажется, что если вы работаете с компиляциями, которые мешают вам использовать ветвление в ваших интересах, вы не должны отслеживать их вообще. – Kzqai

ответ

2

Вы можете использовать подход, похожий на Mercurial: одна ветвь на репозиторий.

Каждая ветвь SVN будет жить в репозитории git через git-svn (с учетом импорта/экспорта только одной ветки).
Между репозиториями Git вы можете отслеживать ветвь другого git repo (ака, другой SVNbranch), вытаскивать его в заданный git repo (другой SVNbranch) и объединять его с вашей текущей ветвью мастера до git-svn dcommit, которая возвращается к соответствующая ветвь svn.

+0

Это лучший совет, который я видел, но я не могу заставить его работать без огромных хлопот. Я мог бы что-то упустить, я новичок в git. Пока я просто собираюсь использовать svn diff xxxxxxx -c xxx | патч, пока я не пойму это лучше. – 2009-11-18 16:55:58

0

У вас может быть локальный общий клон вашего репозитория git-svn. Но тогда вам придется обновлять оба отдельно. Лучшим подходом было бы использовать git-new-workdir, который создаст для вас новый рабочий каталог с отдельным индексом, но с общим репо. Таким образом, если вы обновите/извлечете новые коммиты в исходном репо, то они станут видимыми и в другом рабочем каталоге. Таким образом, вы можете использовать отдельные рабочие ряды для каждого из ваших филиалов.