Могу ли я добавить строку в мои сообщения коммитов перед отправкой их в SVN в git-svn? - PullRequest
1 голос
/ 28 октября 2011

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

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

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

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

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

Документация по git hooks .

В каталоге .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 голосов
/ 28 октября 2011

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

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