Автоматически помечать наборы изменений при фиксации или отправке в печь

Я хотел бы знать, есть ли способ автоматически пометить набор изменений, поскольку он фиксируется локально или при отправке в хранилище печи.

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

Я также открыт для любых других подходов для достижения автоматической пометки при каждой фиксации / нажатии.


person muruge    schedule 02.12.2010    source источник
comment
Также в Kiln StackExchange: kiln.stackexchange.com/questions/2602/   -  person tghw    schedule 03.12.2010


Ответы (2)


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

  • Использовать хэш набора изменений в качестве идентификатора?
  • Использовать в качестве идентификатора строку, сгенерированную из журнала (см. Ниже)?

Описательную строку можно создать из журнала с помощью этой команды:

hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'

Результат принимает вид:

<latest tag>-<# changesets since latest tag>-<changeset hash>

Например, в моем локальном клоне репозитория Mercurial это генерирует:

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7

Это говорит о том, что после тега 1.7.2 было совершено два коммита, а текущий хэш набора изменений - 5e51254a.

В Mercurial каждый тег создает новый набор изменений. Поэтому, если вы помечаете каждую фиксацию, вы удваиваете количество ревизий в репо. Вам следует использовать встроенные инструменты (как описано выше), а не пытаться воссоздать колесо.

person Tim Henigan    schedule 02.12.2010
comment
+1 интересный подход! Я бы использовал {short} вместо {node}, чтобы длина дескриптора версии оставалась управляемой. - person Wim Coenen; 03.12.2010
comment
hg log -r tip ... наверное лучше. {short}, к сожалению, не работает в 1.4.3 - person Chris McCauley; 03.12.2010

Я хотел бы знать, есть ли способ автоматически пометить набор изменений, поскольку он фиксируется локально или при отправке в хранилище печи.

Для этого вы всегда можете написать хук фиксации поста.

Я хотел бы, чтобы каждый набор изменений имел тег с номером версии / сборки.

Теги полезны для определения важных моментов в вашей истории коммитов. Предоставление этим моментам значимого имени, которое относится к разработке продукта, например, версии 1.0, версии 1.3 и т. Д.

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

Считайте тег метаинформацией о наборах изменений. Не все из них заслуживают одинакового значения. Не всем из них требуется эта метаинформация.

Просмотр тегов может дать вам значимую историю только в том случае, если вы будете их экономно использовать.

На крючках

Видеть:

Пример: запуск после добавления группы изменений с помощью push, pull или unbundle. Я использовал его для запуска автоматических сборок.

[hooks]
changegroup.yyyy = command 

Точно так же есть хуки post-commit, post-push.

[hooks]
post-<command> =  command
person pyfunc    schedule 02.12.2010