Subversion для обновления версии в текстовом файле

Здесь я нахожусь в круговой ловушке ... Мы строим на выделенном сервере, поэтому, когда мы выполняем извлечение и сборку, я хочу обновить информацию о версии в проектах, чтобы показать такую ​​версию, чтобы последняя цифра была «ревизией». число при этом текущем притяжении для подрывной деятельности.

Но если сценарий обновляет этот файл, значит, он не актуален. Так что мне нужно повторно зафиксировать этот файл, или объединить его при следующем запросе, или ...? Затем номер версии увеличивается.

Я решил это в программе на C ++, поместив фактические номера ревизий в файл, который НЕ находился под контролем SVN. Теперь сценарий может «обновить svn», записать номер ревизии, изменить локальный файл и выполнить сборку. Однако это создает зависимость от файла, который не находится под контролем SVN.

Кроме того, есть проекты, в которых кажется, что я не могу перенести номер версии в отдельный файл и оставить этот файл вне контроля SVN.

Что мне действительно хотелось бы видеть, так это тег "eyecatcher", который SVN будет обновлять при фиксации svn (или обновлении svn). Что-то вроде: {! SVN_REV} Итак, мой файл сборки C # может выглядеть так:

[assembly: AssemblyFileVersion("1.1.0.{!SVN_REV}")]

Другие системы контроля версий поддерживают такую ​​возможность. Есть ли в Subversion способ сделать это?

Спасибо за любой совет. Скотти


person SpacemanScott    schedule 31.07.2015    source источник
comment
Подстановка ключевых слов   -  person crashmstr    schedule 31.07.2015
comment
Я тоже хочу знать! Мы контролируем версии этого файла; PITA. Что мне действительно нужно, так это практическое решение, в котором я могу ввести желаемый номер версии (через ANT или проект установки VS или Jenkins или?) И распространить его в процессе сборки, чтобы при установке программы и функции Windows отображали эти новые номер версии.   -  person radarbob    schedule 31.07.2015


Ответы (1)


если скрипт обновляет этот файл, значит, он не актуален

Нет, это текущее (это информация), вы просто не можете сохранить это незначительное изменение в репозитории (лучший и самый простой способ)

С другой стороны, вы можете

  • Сохранить файл-шаблон в репозитории (читайте про SubWCRev и его ключевое слово)
  • На этапе сборки создайте дополнительный не версионный файл на первом этапе с ключевыми словами, замененными реальными (фактическими данными) и используйте этот файл, а не шаблон
person Lazy Badger    schedule 31.07.2015
comment
Хорошо, семантика ... репозиторий устарел, поэтому разработчики имеют к нему доступ. Скрипт, который у меня есть, обновляется, а затем строится. Затем он должен зафиксировать это изменение обратно? Если мне нужно повторно выполнить фиксацию только для увеличения числа, то подсчет будет бессмысленным. Потому что, если я запущу его снова, у меня будет новый номер ревизии, который не связан с какими-либо реальными изменениями или исправлениями. Этого я пытаюсь избежать. В настоящее время я просто иду по пути не версионного файла, который заменяет ключевые слова в версионном. - person SpacemanScott; 01.08.2015
comment
Затем он должен зафиксировать это изменение обратно? - никогда. Просто svn revert это изменение в файле - person Lazy Badger; 03.08.2015