Пока Млибелт цитировал правильный текст, он сделал неверный вывод.Даже дважды:
- Это должно быть сделано в ловушке после фиксации
- Невозможно сделать в ловушке
Второе утверждение
Если перехват фиксации перезапишет файл , не включенный в этот коммит , это будет совершенно корректная операция, которая ничего не сломала.
Первое утверждение
Это решение явно плохое по многим причинам:
- , которые вы включаете в репозиторий (чтобы ссылаться позжена нем) данные, которые зависят от общих изменений данных репозитория, но: при каждом изменении данных в этом файле также изменяется состояние данных репозитория .Классический порочный круг
- вы увеличиваете сумму требуется ревизий дважды : после каждой "ревизии данных" вы должны выполнять "слежение-ревизию"
- вы хотите, чтобы VCS был связан с проблемами других, более применимыми к инструментам сборки-развертывания, для VCS с этими данными достаточно
Репозиторий (или рабочая копия) как таковая содержит информацию о последней ревизии в ней (svn info
, svnversion
, svn log -r HEAD
), хранение ее внутри данных нарушает Raroz из Occam.Вы извлекаете данные только тогда, когда вы «публикуете» данные для использования за пределами репозитория.
Какие инструменты и способы их использования сильно зависят от: развертывания рабочего процесса, ОС (у вас нет gawk-grep-sed наобычный Win-box), только некоторые подсказки:
- SubWCRev (только для Win) из TortoiseSVN может проверять рабочие копии и обрабатывать файлы-шаблоны, заменяя специальные ключевые слова SubWCRev действительными значениями.У SubWCRev есть родственные проекты для Linux-мира.Использование этих инструментов предполагает хранение файла шаблона где-то (внутри или вне репо) и сохранение обработанного результата внутри подготовленного к использованию дерева проектов.
- svnversion и svnlook можно использовать в любой ОС (для WC).-path и путь к репозиторию соответственно)
И наконец
- Вы можете использовать ключевые слова Subversion для хранения номера ревизии внутри репо , только не забывайте, что $ Revision $, используемый внутри файла, отражает ревизию последних изменений в этом файле и имеет предопределенный формат после расширения