Модифицируйте файлы под svn в скрипте ловушки - PullRequest
2 голосов
/ 19 ноября 2009

Каков наилучший способ (если таковой имеется) для изменения определенного файла в нашем хранилище в post_commit hook ?

Например: я хочу добавить строку контрольной суммы в файл somefile.conf

Ответы [ 3 ]

4 голосов
/ 19 ноября 2009

Возможно, вы захотите прочитать эту главу книги SVN. В конце этого, в красивой красной рамке есть следующее предупреждение:

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

2 голосов
/ 19 ноября 2009

Не делайте этого в ловушке - делайте это в виде отдельного изменения, чтобы другие пользователи этой ветви могли затем развернуть свою рабочую копию. Это не должно быть сложнее, чем это (в псевдокоде):

  • скрипт получает рабочую копию из хранилища в локальный каталог
  • скрипт изменяет файл
  • скрипт фиксирует файл с хорошим сообщением коммита "напр." Скрипт Foo: добавление контрольной суммы "

Нередко скрипты сборки (работающие в cron или запускаемые Makefile) периодически делают изменения в репозитории, например, регенерируют файлы на основе других файлов. Иногда они регистрируются в хранилище, а иногда нет, в зависимости от того, кто и как использует эти файлы.

1 голос
/ 19 ноября 2009

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

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