Как я могу обновить номер редакции в неизмененном файле для каждого коммита, имеющего также этот файл? - PullRequest
1 голос
/ 03 сентября 2010

У меня есть файл revision.txt в моем проекте SVN.

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

Например:

  1. revision.txt содержит «10»
  2. Я делаю некоторые изменения в своей рабочей копии (другие файлы, не revision.txt)
  3. svn ci
    • скрипт запуска хука
    • чтение следующего номера редакции
    • обновление revision.txt
    • принятие изменений (также revision.txt)
  4. теперь revision.txt уже зафиксирован с номером ревизии 11

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

Затем попробуйте "auto-props", но они работают только с измененными файлами.Предпочтительным решением является использование только скрипта-хука, а не скрипта-обертки, который проверяет ревизию и обновление.

Возможно?Примеры приветствуются

Ответы [ 3 ]

2 голосов
/ 03 сентября 2010

Вы не можете угадать номер следующей ревизии перед коммитом из-за условий гонки - вы не можете гарантировать, до тех пор, пока кто-нибудь еще не опередил вас.Также очень плохо изменять файлы в хуке фиксации SVN - рабочие копии теряют актуальность и беспорядок, так как они получают только «сработало» или «не получилось» с сервера, но не «сработало», ното, как этот файл теперь имеет это содержимое ... "

Для чего вам это нужно?Возможно, есть другой способ получить то, чего вы пытаетесь достичь.

Вы можете автоматически сгенерировать файл revision.txt непосредственно перед тем, как он понадобится, используя " svn info " и отфильтровавСтрока "Revision:" в файл.

0 голосов
/ 03 сентября 2010

Подстановка ключевых слов подходит ближе всего к тому, что вы хотите, но на самом деле это тоже не работает, поскольку дает вам последнее изменение файла, а не проекта. Из Subversion FAQ по этому вопросу:

Информация, которую вы хотите (ревизия вашей рабочей копии) имеется из команды svnversion ; это дает вы информация на уровне ревизии рабочей копии с указанным путем (см. svnversion - помогите для деталей).

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

0 голосов
/ 03 сентября 2010

Как вы уже упоминали, основываясь на ключевых словах svn: можно изменять только измененные файлы.Но я думаю, что вам нужна система сборки, которая обрабатывает такую ​​информацию (может быть сервер сборки / сервер непрерывной интеграции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...