Что делает подвижный пересмотр без среднего родителя?

У меня есть Подвижный репозиторий, который находится в странном состоянии теперь. Это - то, на что это похоже в TortoiseHG:

Hg graph

Я не думал, что это будет возможно. Пересмотр 54 имеет родителя "-1 (000000000000)" (т.е. ничто). Существует ясно что-то, что я еще не понимаю о Подвижном, может любой сообщать мне то, что это означает - и что, должно быть, произошло, чтобы это вошло в это состояние. Насколько я знаю, это только имело материал, который, продвинутый и вытягивают от него - и никто не использовал дурацких расширений.

Изменения 54 и 55 просто добавляли теги, но если я 'обновляю-C', к пересмотру 54 я заканчиваю ТОЛЬКО с .hgtags файлом.

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

8
задан Mal Ross 12 February 2013 в 13:55
поделиться

2 ответа

Если вы посмотрите на определение набора изменений , вы увидите:

Каждый набор изменений имеет ноль, один или два родительских набора:

  • Он имеет два родительских ревизий, если фиксация была слиянием.
  • У него нет родителя, если набор изменений является корнем в репозитории.
    В репозитории может быть несколько корней (обычно только один), каждый представляет начало ветки .

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

Так что, возможно, это то, что вы сделали:

  • обновление до 53 (у которого тогда уже был собственный дочерний элемент «54»)
  • изменение файлов
  • фиксация, таким образом, начав новую ветку с 54 , без родителя
    (который бы совершил вторую фиксацию с тем же родителем)

или:

  • завершение 53 с опцией - close-branch ,
  • потенциально новая фиксация (без переключения на другую ветку) может начать новую

Ry4an (настоящий специалист по Mercurial;)) вмешивается и комментирует:

- close-branch doesn ' Я ничего не делаю, кроме как скрыть ветку из списка, и это будет отменено в следующий раз, когда вы сделаете фиксацию в этой ветке. Это не создаст множественных корней.

VonC прав в своем диагнозе, множественные головы .
Но никакая комбинация « update » и « commit » не приведет вас в это состояние.
Чтобы получить несколько корней, обычно делали « hg pull » из репо и использовали - force , чтобы переопределить предупреждение « несвязанные репозитории ».


(«без родителя», то есть родительские идентификаторы установлены на 00000, см. «за кадром» :

alt text
(источник: red-bean.com )
)

7
ответ дан 5 December 2019 в 14:00
поделиться

Другой способ увидеть это - выполнить hg update null после фиксации rev. 53. Например, рассмотрим эту последовательность:

hg init foo
# create some files
hg addremove
hg commit -m "Revision 0"
# edit, edit, edit
hg commit -m "Revision 1"
hg update null
hg tag -m "Create tag v1.0.0.0" "v1.0.0.0"

На этом этапе hg log покажет родительскую версию 2 как -1: 0000000000. Поскольку hg update null очищает рабочий каталог, единственным файлом в нем будет .hgtags (как вы и видели).

Были ли у вас другие теги до ред. 53? Если мои подозрения верны, их не будет в вашем rev. 54 .hgtags .

5
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: