#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
… но это также стоит прочитать по причинам, по которым вы не стали бы его использовать.
Ответ №4:
- Прочитайте План ключевых слов и управление версиями с помощью Make в mercurial wiki
- Выберите наилучшую для вас политику рабочего процесса
- Вместо идентификатора команды, не являющегося шаблоном, выберите команду, которая возвращает необходимые данные и является шаблонируемой с параметром —template
- Напишите хороший шаблон для строки идентификатора версии, мой любимый — что-то рядом
hg tip --template "{rev}:{node|short}-{latesttag} {latesttagdistance}n"
для чего, например, для репозитория hgsubversion сегодня я получаю в качестве результата
830:d4b3b8370b3c-1.2.1 42