Почему hg всегда фиксирует подмодуль git, даже если он не изменился? - PullRequest
9 голосов

У меня есть репозиторий hg, с под-репозиторием hg, в котором есть некоторые подмодули git.(Я знаю, что это звучит совершенно безумно, но он работает с репозиториями svn в google-коде, в libs в github и модулями в bitbucket. Я использую код, свободно доступный множеству людей, ВОЗ AM Я жаловался на их решения оконтроль версий - мне нужен код, и я благодарен за это).

Небольшое «дерево» об этом сценарии:

+ hg repo
  + hg subrepo
    + git submodules

Когда я изменяю файл в hgsubrepository и commit, он фиксирует все подмодули git, даже если они не были изменены.Я запустил hg status, он ничего не показывает о подмодулях git, но если я сделаю коммит:

committing subrepository SUBREPO

Это не было бы так проблематично, если бы я использовал только один основной репозиторий hg скуча подмодулей git.Проблема возникает, когда я делаю изменения в первом репозитории hg: теперь, когда я фиксирую, он фиксирует в репозитории hg И в подкаталоге hg, поскольку он всегда фиксирует подмодули git.Итак, теперь у меня есть комментарий, предназначенный только для первого репозитория hg, и тот же комментарий в подкаталоге hg.

Как избежать этого перемежающегося committing subrepository SUBREPO, для каждого коммита, который я выполняю намой репозиторий / подкаталог hg с подмодулями git?Это ошибка?Является ли это git-дизайном (может быть, git-репозитории всегда меняют, по крайней мере, файл «status» или что-то в этом роде, которые всегда меняются после извлечения? У меня нет большого опыта работы с git ...)

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Даже извлечение, которое ничего не дает, коснется файлов в git ... точнее, файла .git/FETCH_HEAD. Я не помню, как здесь работает hg / Mercurial, но я бы заподозрил то же самое. В любом случае, если это пустое извлечение, то сам файл не изменяется, только отметка времени.

Вы можете убедиться в этом, сделав точную копию вашего репозитория git / hg, а затем вытащите только одну. Инструмент сравнения каталогов покажет вам измененные файлы.

Если я правильно помню свой hg, команда hg status не будет включать файлы в под-репозитории, поэтому поведение, которое вы видите, имеет смысл.

0 голосов
/ 15 февраля 2012

не знаю, поможет ли это, но в Субрепозитории , раздел 3.1, они объясняют, как следует составлять субрепозицию.

Но я понимаю, что вы не имеете права голоса в этой организации?Можете ли вы перестроить свою иерархию?

...