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

StackOverflow https://stackoverflow.com/questions/4339549

  •  30-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Описательная строка может быть сгенерирована из журнала, используя эту команду:

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

Результат принимает форму:

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

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

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7

Что говорит мне, что произошло два коммита с тега 1.7.2, а нынешние измерительные устройства 5E51254A.

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

Другие советы

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

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

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

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

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

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

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

На крючках

Видеть:

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

[hooks]
changegroup.yyyy = command 

Аналогично, есть хуки post-commit и post-push.

[hooks]
post-<command> =  command
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top