Могу ли я добавить строку в свои сообщения о фиксации перед отправкой их в SVN в git-svn?

#git #svn #git-svn

#git #svn #git-svn

Вопрос:

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

Я пытаюсь использовать git SVN, но я бы не хотел ставить «admin» в конце моих частых коммитов git-svn.

Есть ли способ заставить git SVN сделать это за меня?

Ответ №1:

Вы можете настроить перехват git commit, чтобы при фиксации в git он добавлялся "admin" к сообщению о фиксации. Затем, когда вы сделаете git svn dcommit это, в ваших сообщениях о фиксации уже будет ожидаемая строка.

Документация по git-перехватам.

В каталоге вашего проекта .git будет вызываться каталог hooks .

 cwd: ~/testrepo/.git/hooks master 
λ > ls
applypatch-msg.sample  post-update.sample     pre-commit.sample      prepare-commit-msg.sample
commit-msg.sample      pre-applypatch.sample  pre-rebase.sample      update.sample
  

Вы можете взглянуть на файлы, prepare-commit-message.sample которые можно использовать для редактирования сообщений о фиксации до их фиксации.

Создайте копию prepare-commit-message.sample и вызовите ее prepare-commit-message .

 cp prepare-commit-message.sample prepare-commit-message
  

Итак, откройте этот файл, и в качестве демонстрации я добавил эту строку в конец:

 # Append 'admin' to the end of the commit message, $1 is the message passed as argument
echo "admin" >> "$1"
  

Сохраните изменения, выйдите, попробуйте внести изменения и зафиксируйте их.

 λ > echo etc >> README 
λ > git add .
λ > git commit -m "testing"
[master 89a435d] testing admin
 1 files changed, 1 insertions( ), 0 deletions(-)

λ > git log
commit 89a435d5e110229d3c9989bfb464ae2420eb5088
Author: birryree
Date:   Fri Oct 28 12:54:20 2011 -0400

    testing
    admin
  

Ответ №2:

Пара идей, но каждая требует небольшой работы:

  1. Добавьте «admin» в конце вашего сообщения автоматически с помощью git commit-msg.
  2. Напишите скрипт, который использует git filter-branch —msg-filter для добавления «admin» в конец ваших сообщений, которые вы запускаете перед выполнением dcommit.
  3. Убедите администратора SVN удалить явно бесполезное требование, учитывая, что все его обходят.