Изменение строки текста при создании тега

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

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

Set "SVNHEAD=SVN HEAD"
set REPOS=%1%
Set "SVNREV=%REVISION%" (get the revision number somehow from SVN)

gsar -s%PARTSDIR:I:\=I::\% -r%SVNHEAD% -i -f %SVNREV%

Исполняемый gsar заменяет строки текста в файлах ascii, если есть простой способ сделать это, файл .bat, хотя я был бы очень благодарен услышать это. Кто-нибудь знает, возможно ли это/как это сделать?

Большое спасибо Крис


person Chris    schedule 06.11.2012    source источник


Ответы (1)


  • Вы не можете получить будущий номер редакции в хуке, потому что он еще не существует. Вы не можете предсказать номер ревизии, потому что это может быть "HEAD"+N (где N - любое положительное число): не забывайте об одновременной параллельной фиксации
  • Изменение содержимого транзакции в хуке считается крайне плохой практикой, которой все должны избегать.
  • Если вы хотите иметь Revision-Number в файле, вы можете (есть?) использовать SVN-ключевые слова.

Ключевое слово $Revision$ будет переведено в строку, содержащую (помимо прочих данных) ревизию последнего коммита этого файла, т.е. в вашем случае - ревизию создаваемой ветки и будет содержать эти данные, если вы не модифицируете файл внутри ветки

  • If $Revision$ trick isn't usable for you, you can rely on other data
    • svn log -q BRANCH-URL return in last data-string revision of creating branch
    • С дополнительным коммитом после ветвления вы можете svn propset somepropertry somevalue BRANCH-URL и прочитать его позже с помощью propget|proplist (somevalue=ревизия ветвления, потому что она уже существует)

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

person Lazy Badger    schedule 06.11.2012