2

В моей системе сборки каждый раз, когда я запускаю новую сборку, я сохраняю информацию о пересмотре и хеше текущего коммита в нескольких переменных и использую их в своих источниках без проблем. Например, заголовок окна форматируется как «NAME-REVISION-HASH».как вставлять информацию о пересмотре DVCS при построении без него

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

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

Есть ли способ разрешить людям без dvcs получить право пересмотр и хэш-информация?

+0

Просто сделайте клонирование repo _the_, чтобы приобрести источник. Разумно ожидать, что разработчики, которые хотят иметь возможность создавать свой проект, используют ту же систему управления версиями, что и вы. Подумайте, как работают все эти хостинг-сайты (Google Code, github, bitbucket, Codeplex и т. Д.). –

+0

Возможный дубликат [Перемещение с CVS на git: $ Id: $ эквивалент?] (Http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent) – guerda

ответ

0

Вы можете использовать git describe, чтобы получить уникальную строку, которую вы можете включить в свою сборку. git сам делает это, чтобы установить его версию (git version здесь возвращается git version 1.8.2.rc1.19.g443d803, т. Е. 1.8.2-rc1 + 19 коммитов, последняя фиксация имеет SHA1 443d803e0dacd0a1c6700503689f3cd95751aba1; git describe возвращает v1.8.2-rc1-19-g443d803).

С дней SCCS идет обычай расширения $Id:$ и других конструкций ключевых слов, что имело смысл в те дни, когда VCS обрабатывал только отдельные файлы; который сегодня является рудиментарным (и git вообще не использует «расширение ключевых слов»).

1

Добавление отдельного файла, содержащего этот вид информации бросает вызов преимущества использования распределенной системы управления версиями

WTF? «Люди строят проект, загрузив стандартные источники ...», потому что у них нет никаких VCS, еще один файл «не поддается» ничего

, потому что необходимо будет обновить вручную при каждой фиксации

А что? Автоматически зафиксированный файл со специально подготовленными ключевыми словами (или текстовыми константами) не является большой проблемой, по крайней мере для Mercurial

+0

Да, но этот файл будет меняться каждый раз, когда совершается фиксация, и будет загрязнять список файлов фиксации с помощью этой дополнительной информации ... – koda

+0

@koda - да, но это справедливая цена (IMNSHO): вы не можете получить «все зря». Но я (лично), как идея Ry4an –

0

Если вы используете Mercurial для создания архивов, это уже обрабатывается для вас. hg archive команды, полномочие веб-интерфейс загрузка тарбола/молния автоматически включает .hg_archival.txt файла, который выглядит следующим образом:

repo: 0339f7b37c3416248e4e0b183a481aa40ade150e 
node: 0339f7b37c3416248e4e0b183a481aa40ade150e 
branch: default 
latesttag: null 
latesttagdistance: 1 

Так что ваш код может использовать логику, которая сначала проверяет для локального репозитория, чтобы получить информацию о версии и если это не там, то ищет файл .hg_archival.txt. latesttag и latesttagdistance особенно удобны, если вы отмечаете выпуски. Вы можете использовать их для создания строки версии, что это полезно для людей, так и DVCSs как:

2.0.1-5-40ade150e 

который может быть прочитан как «пять фиксаций, начиная с версии 2.0.1 с кешем 40ade150e»

+1

Просто заметьте - если вы хотите следовать «Семантическому ведению» (не плохая идея), «changeets after» должны быть разделены «+». '2.0.1 + 5-40ade150e' –

0

От another question:

К настоящему моменту существует поддержка $ Id: $ в Git.Чтобы включить его для файла README, вы должны поставить «README ident» в .gitattributes. Поддерживаются подстановочные знаки в именах файлов. См. man gitattributes.

 Смежные вопросы

  • Нет связанных вопросов^_^