Использование Hg локально и передача в репозиторий SVN, когда другие члены команды только работают над SVN - возможно ли это? - PullRequest
7 голосов
/ 24 марта 2011

Я нашел очень похожие вопросы здесь, на SO, с хорошими ответами;но по какой-то причине я все еще не могу понять, как заставить это работать.Я обеспокоен тем, что это может быть просто невозможно.

Вот ситуация: я работаю в небольшой команде, которая использует центральное хранилище SVN в качестве нашей системы контроля версий.Мы с парным программистом расстроились из-за того, что не имели возможности локальных коммитов (и не хотели испытывать трудности с использованием веток SVN), поэтому мы рассмотрели возможность использования Git или Mercurial в качестве клиента SVN и обнаружили, что hgsubversionкажется способным делать то, что мы хотим: работать локально в репозитории Hg, фиксировать локально и передавать только в SVN, когда мы будем готовы.

Когда пришло время нажать кнопку, мы получили это сообщение об ошибке от Hg:

Sorry, can't find svn parent of a merge revision.

Интересно, проблема в том, что нам пришлось получать изменения из SVN для получения обновлений наших товарищей по команде, а затем сливаться с нашими локальными изменениями, и теперь Hg не может понять, каксделать SVN счастливым?Похоже, это сообщение, которое я получаю из других SO вопросов и ответов, на которые я смотрел;однако совет, который был распространен в этих случаях (выполнение hg rebase --svn), похоже, не работает для нас;то же самое сообщение "not find svn parent" дано.

Возможно ли это вообще?Или это больше проблем, чем стоит, когда другие разработчики в команде вносят изменения непосредственно в SVN?

Ответы [ 2 ]

6 голосов
/ 25 марта 2011

Я занимаюсь этим уже больше года, и это прекрасно работает.Я получаю сладкую, сладкую любовь DVCS и остальных людей, э-э ... нет.Я использую hgsubversion в качестве моего моста.У меня было немало проблем с hg-svn.YMMV.

Я использовал this , чтобы получить настройки и с тех пор люблю их!

Предостережение заключается в том, что Mercurial нельзя использовать для объединения изменений между ветвями.Вы все еще можете работать с веткой (используйте hg up [some-branch]), но когда придет время объединить ее с транком, вам нужно будет зафиксировать, нажать на some-branch, а затем использовать subversion для слияния some-branch в транк.

Я подготовил пост в блоге, в котором подробно описывается эта процедура.Вы можете увидеть это здесь: http://xinmyname.tumblr.com/post/11305033055/subversion-mercurial-branches-oh-my

Удачи!

5 голосов
/ 25 марта 2011

Проблема в том, что hgsubversion не может передавать слияния из Mercurial в Subversion.Пока вы не создадите никаких наборов изменений слияния, все должно работать нормально.(Слияния FWIW Subversion работают нормально, так как hgsubversion просто игнорирует информацию о слиянии и создает регулярные наборы изменений с одним родителем.) Описанная вами проблема - одно из известных ограничений hgsubversion;другие перечислены в hg help subversion.

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

...