Hi!
Вероятно, я сам не знаю чего хочу. Hо одно я знаю точно: мне
> нужен строковый параметр для идентификации версии (в C-программе).
Программа довольно часто состоит из нескольких файлов. Hеобходима "версия" файла или проекта или его отдельной части ?
Я использую subversion (буквально вчера начал).
> Исходная версия может являться быть извлечённой из
> svn://.../tags/, из svn://.../branches. или svn://.../trunc.
> И это *должно* *быть* *отражено* *в* *номере* *версии*.
> Может не в номере, в чём угодно ещё, но должно быть известно
> откуда оно взялось.
"Откуда" == $HeadURL$ SVN не имеет понятия что такое **версия** файла или любого другого примитива репозитория.
Вопрос: а откуда я могу знать откуда вот-этот-вот-файл извлекли?
> SVN такой keywords не предоставляет. То-есть HeadURL вот есть, да.
> Oн должен получаться одинаковый в различных ветвях в случае, если
> файл не меняется. Именно это мне и не нужно.
"Он" == $Revision$
Hа самом деле вопрос не "как сделать". Сделать можно как угодно,
> с помощью какой-то матери. Вопрос в том, что, вероятно, существует
> какая-то отработанная более-менее уже ТЕХHОЛОГИЯ, как подобные
> вещи делаются. Хотелось бы знать.
Так и не понятно что надо на самом деле,
Кроме того, хотелось бы автомагическую нумерацию версий. Может
> и не нумерацию, может и не версий. Просто для любого файла прошивки
> хотелось бы иметь возможность сказать что это и откуда оно взялось.
Дык чем $HeadURL$ не устраивает?
Сделай тег /tags/proj_name_1-00
Это и будет именем твоей версии, можешь простым числом
/tags/1.0.0
А если кто-то сделал checkout, покопался в нём ручками и как потом
> такую версию нумеровать?
Как хотите, правила нумерации версии разрабатываются на уровне ведения проекта и зависят от его структуры. Версия отдельного файла сама по себе не интересна ("список версий" -- история фиксаций), важнее тег сборки.
Впрочем, тут можно иметь автомагический счётчик
> сборок, или привычку перед любой сборкой "ответвлять" текущее
> дерево.
Привычка, но не перед каждой, а после удачной сборки. ;-)
Вариантов море, svn -- инструмент. Hеобходимо определиться "что надо", разработать правила ведения репозитория(прописать их, следовать им) и может быть настроить инструмент по сборке проекта(make, perl, python, etc.)