Включить номера ревизий в файл после фиксации?

#asp.net #mercurial #tortoisehg

#asp.net #непостоянный #черепаховый #mercurial #tortoisehg

Вопрос:

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

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

Ответ №1:

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

Во-вторых, вам, вероятно, нужен хук. Это можно сделать различными способами. Самое простое, вероятно, что-то вроде этого при проверке вашего веб-сервера:

 # this gets run after each update, writes the LOCAL revision number to a file
[hooks]
update = hg id --num --rev . > update-number
  

Комментарии:

1. После аппаратного сбоя восстановления из резервной копии этот хук перестал работать по какой-либо причине. При повторном применении я обнаружил, что update = это не сработало: вместо этого я использовал commit = .

Ответ №2:

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

Ответ №3:

Существует также расширение ключевого слова, которое расширит ключевые слова в стиле CVS / SVN в файлах. Они могут включать версии, даты, авторов и т. Д…

https://www.mercurial-scm.org/wiki/KeywordExtension

… но это также стоит прочитать по причинам, по которым вы не стали бы его использовать.

https://www.mercurial-scm.org/wiki/KeywordPlan

Ответ №4:

  1. Прочитайте План ключевых слов и управление версиями с помощью Make в mercurial wiki
  2. Выберите наилучшую для вас политику рабочего процесса
  3. Вместо идентификатора команды, не являющегося шаблоном, выберите команду, которая возвращает необходимые данные и является шаблонируемой с параметром —template
  4. Напишите хороший шаблон для строки идентификатора версии, мой любимый — что-то рядом

hg tip --template "{rev}:{node|short}-{latesttag} {latesttagdistance}n"

для чего, например, для репозитория hgsubversion сегодня я получаю в качестве результата

830:d4b3b8370b3c-1.2.1 42