Я - новичок Мерзавца с UNIX опыт Microsoft Visual SourceSafe и SCCS.
В SCCS каждый файл имеет версию (я %), который сделан из Выпуска (%R), Уровень (L %), Ответвление (%B), и Последовательность (S %). %I равен % R. % % L.B. % S, хорошо? Они упоминаются как идентификационные Ключевые слова.
Цель - Вы, вставляют эти идентификационные Ключевые слова в исходный код перед регистрацией их, затем когда Вы проверите их для только для чтения (для не изменения), Это преобразует их в их номер версии. Например:
printf (“Версия s\n”, “%I “);
... станет,
printf (“Версия %s\n”, “1.4.6.2”);
Который распечатает,
Версия 1.4.6.2
SCCS отслеживает версии на основе файла файлом и увеличивает их каждый раз, когда в них регистрируются.
Там что-нибудь похожее к этому в Мерзавце?
Как обсуждалось в вопросе SO « Чтобы добавить префикс? К кодам Git / Svn », Git не имеет расширения ключевых слов RCS.
Ближайшей командой Git была бы git describe
, чтобы иметь какую-то ссылку на фиксацию.
Но обычно не рекомендуется смешивать метаданные (т.е. данные «идентификатор версии» о данных «файл») с данными (файлами).
Если вам действительно нужна такая информация, более практичным будет отдельный специальный файл, в котором перечислены другие ваши обычные файлы с их идентификатором версии.
Даже ClearCase, который имеет те же понятия, что и SCS, с точки зрения ветвления и последовательности для каждого файла, не имеет встроенных номеров версий: см. Встроенные номера версий - хорошо или плохо? .
Вы можете сгенерировать уникальные имена тегов, используя git-describe .
Команда находит самый последний тег, доступный после фиксации. Если тег указывает на фиксацию, отображается только тег. В противном случае он добавляет суффиксы к имени тега с количеством дополнительных коммитов поверх помеченного объекта и сокращенным именем объекта самой последней фиксации.
Пример того, как определить номер версии программного обеспечения с помощью 'git describe' ( отсюда ):
01 git commit -m'Commit One.'
02 git tag -a -m'Tag One.' 1.2.3
03 git describe # => 1.2.3
04 git commit -m'Commit Two.'
05 git describe # => 1.2.3-1-gaac161d
06 git commit -m'Commit Three.'
07 git describe # => 1.2.3-2-g462715d
08 git tag -a -m'Tag Two.' 2.0.0
09 git describe # => 2.0.0