#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:
Пара идей, но каждая требует небольшой работы:
- Добавьте «admin» в конце вашего сообщения автоматически с помощью git commit-msg.
- Напишите скрипт, который использует git filter-branch —msg-filter для добавления «admin» в конец ваших сообщений, которые вы запускаете перед выполнением dcommit.
- Убедите администратора SVN удалить явно бесполезное требование, учитывая, что все его обходят.