Subversion: как добавить текст в каждый зафиксированный файл? - PullRequest
1 голос
/ 28 октября 2009

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

Вот что мне нужно для работы

  1. Пользователь фиксирует файл
  2. Что-то работает (крюк или что-то еще)
  3. Что-то еще из # 2 должно добавить статический текст к файлу

На основании этого http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=296576 Я вижу, что это не рекомендуется, но должен быть способ добавлять текст в файл при каждом коммите.

Операционная система: Отправлено Os

Причина, по которой мне это нужно: защитить все файлы кода, вставив официальные уведомления

Ответы [ 5 ]

10 голосов
/ 29 октября 2009

Посмотрите на красное поле в конце этой главы книги SVN:

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

Я подписываюсь под POV, что текст в красных прямоугольниках следует воспринимать серьезно.

8 голосов
/ 28 октября 2009

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

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

Пока единственно возможным решением является использование клиентских крючков tortoiseSVN:

Автоматическая вставка комментариев с использованием TortoiseSVN?

К сожалению, это ограничивает разработчиков в использовании только TortoiseSVN. Например, использование плагинов Visual Studio не будет работать: (

Если кто-то найдет какой-либо централизованный способ сделать это, пожалуйста, напишите здесь.

0 голосов
/ 29 октября 2009

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

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

Может даже быть в состоянии использовать что-то вроде Хадсона для размещения этого в удобной среде.

0 голосов
/ 28 октября 2009

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

Здесь есть немного информации: http://svnbook.red -bean.com / ru / 1.4 / svn.ref.reposhooks.post-commit.html

Тем не менее, зачем тебе это делать?

...