2017-02-07 58 views
0

используя: Windows, TortoiseHg 4.4TortoiseHg 4.4 работает ли он для совершения новинок в subrepos?

Я только что начал рассматривать Mercurial как маршрут контроля версий вместо нашей (не такой) замечательной системы TFS 2010. Идея состоит в том, чтобы разрешить более гибкое ветвление с использованием нашей текущей архитектуры проекта и упростить слияние.

Я создал структуру суб репо, аналогичный приведенному ниже:

+Main 
    ++SharedProjects 
    ++Country1 
    ++Country2 

(+ = репо, ++ = subrepo)

Это создало .hgsub в Main, который содержит:

SharedProjects = SharedProjects 
Country1 = Country1 
Country2 = Country2 

Глядя в hg Workbench, я вижу правильную иерархию папок проекта под Main.

Проблема:

Когда я добавить файл в папку стране1 и зафиксировать основную папку, ничего не совершил. Но если я совершу репортаж Country1 (sub), он совершит штраф.

Очевидно, что это вызовет проблемы, когда существует несколько подпоследовательностей в subrepos, и это приведет к очень рискованным изменениям, которые будут упущены.

Не уверен, что я пытаюсь сделать что-то, чего не должен быть, или если он просто не работает, и есть трюк? Искал и нашел немало старых проблем, но ни одна из этих исправлений не работали:

Я пробовал:

  • добавив ./ в передней части каждого .hgsub пути
  • убедившись, что «рекурсивный «проверяется в диалоге фиксации
  • добавление„recurserepos = истина“к Mercurial.ini
  • удостоверились файл имеет обязательство, если я непосредственно совершил суб репо
  • командной строки совершать от Main» рт.ст. совершают -S -m "контрольная работа CMD линия фиксации "» не получил результат „ничего не изменилось“
+0

Дополнительная информация о тестах командной строки. Я создал mainrepo и subrepo (mainrepo), используя пошаговое руководство в документах HG (http://mercurial.aragost.com/kick-start/en/subrepositories/) и по-прежнему не могу фиксировать изменения, произошедшие на суб-уровень. Похоже, что файл .hgsubstate создается со всеми 00000000 вместо guid, но я попытался установить разные относительные пути (./subrepo, ../subrepo) безрезультатно. , так что, похоже, что там проблема, но в настоящий момент я в тупик для решения. – DaveC

ответ

0

Проблема:

Когда я добавить файл в папку стране1 и зафиксировать основную папку, ничего не совершил. Но если я совершу ретрансляцию Country1 (sub), то совершит штраф.

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

Не уверен, что я пытаюсь сделать что-то, чего не должен быть, или если он просто не работает и есть уловка?

Так оно и работает.

Country1.file - это ответственность за репозиторий Country1.

Main репозиторий - это всего лишь набор подпоследовательных версий, где фиксация в Main является ссылкой на фиксации в субрепозиториях.

Например, вы могли бы:

  • Main 1,0 просто ссылку на SharedProjects 1.1, 1.2 и Country1Country2 1.5.
  • Затем вы можете сделать еще одну фиксацию, где Main 2.0 is SharedProjects 1.99, Country1 1.22 и Country2 2.111.

Теперь, если ваши файлы не под subrepository, коммит будет находиться в хранилище Main.

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

Вы могли бы один единый репозиторий и хранить стране1 в ветви имени Country1, затем COUNTRY2 в ветви имени Country2, и так далее. Одна ветка для каждой папки. Затем вы можете объединить их все в ветвь default (главная ветка).

+0

Слишком грязный, я думаю, за то, что я хотел. Конечно, использовать GIT в конце кажется немного больше, как он может справиться с моими требованиями (пока еще не жаловался!). Благодарю. – DaveC