Номера версий являются локальными для данного репозитория.Они просто сообщают вам порядок наборов изменений в репозитории - если у вас есть 6 наборов изменений, то они должны быть пронумерованы 0–5.Mercurial не может «изобретать» дополнительные номера ревизий, чтобы сохранить исходные номера ревизий в неизменном виде.
Причина, по которой номера ревизий являются локальными, заключается в распределенной природе Mercurial.Допустим, у нас обоих есть второй репозиторий выше с 6 наборами изменений.Если я создам новую ревизию, это будет номер 7 в моем хранилище.Mercurial просто выбирает следующее целое число.
Если вы также создадите набор изменений, то вы также получите номер 7. Теперь, если я вытащу вас, ваш номер 7 будет моим номером.8 - номер редакции меняется.Вот почему вы должны использовать глобально уникальный набор изменений хешей при общении с другими.Они остаются неизменными после push / pull.
Хеш-наборы изменений - это действительно 40 шестнадцатеричных символов: это 160-битные значения SHA-1 хеша.Mercurial обычно показывает только первые 12 символов, если вы не добавите --debug
.Вы можете использовать префикс любого размера, чтобы указать набор изменений, поэтому любой из
$ hg log -r 41453d55b481ddfcc1dacb445179649e24ca861d # full
$ hg log -r 41453d55b481 # normal
$ hg log -r 41453d # smaller
сделает то же самое.Префикс должен быть уникальным только в репозитории, и обычно достаточно 12 символов для этого.Это 12-значное хеш-значение, к которому вы захотите обратиться при общении с коллегами («можете ли вы вытащить 41453d55b481 и протестировать снова?») Или при написании заметок о выпуске («ошибка была исправлена в 41453d55b481»).
В таком инструменте, как TortoiseHg, вы можете использовать Просмотр → Перейти к ревизии , чтобы перейти на набор изменений, используя его хеш.