Крючки для гит-свн - PullRequest
       22

Крючки для гит-свн

13 голосов
/ 06 января 2010

Могу ли я установить хуки для "извлечения" / "толкания" из / в git-svn управляемое хранилище?

Ситуация такова, что у меня есть хост проекта на Google Code , и я использую git для управления локальной рабочей копией. Я хочу установить несколько хуков , чтобы при входе / выходе данных из / в SVN-репозиторий с помощью git svn fetch и git svn dcommit я мог внести некоторые изменения в коммит. Поскольку я не размещаю SVN-репозиторий, я не могу установить перехватчики на стороне сервера.

Есть ли какой-нибудь крючок, который я мог бы использовать? Или есть способ «пометить» обычную ветку, чтобы git pull и git push в этой ветке вместо этого выполняли вход / выход из / в SVN-репозиторий, поэтому можно использовать обычные перехватчики git?

Заранее спасибо.

Ответы [ 3 ]

9 голосов
/ 09 января 2010

Как показано этой веткой , у вас могут быть зацепки на стороне Subversion, которые могут фактически отклонить ваш git svn dcommit на основании некоторых критериев.

Но если вам нужны git-хуки на стороне Git, я бы порекомендовал установить промежуточное bare Git-репозиторий (bare для простого push / pull).
В этом голом репозитории вы можете иметь любой хук, который вам нужен, как показано в « как развернуть несколько веток в разных каталогах с помощью git push? » (не о svn, а просто здесь, чтобы подробно описать аналогичную настройку дополнительный репо)

  • Если промежуточный репо подтвердит ваш толчок, он может вызвать git svn dcommit.
  • также может по запросу git fetch вызвать git svn fetch и подтвердить его, прежде чем позволить вашему собственному git fetch двигаться вперед.

(2 года спустя)

Дэвид Соутер предлагает решение в своем блоге (апрель 2012)

Решение, которое у меня есть, - иметь хранилище с разделенными головками. В большинстве случаев промежуточный репозиторий будет иметь пустой рабочий каталог. Когда происходит push, он проверяет master, проверяет сборку и отправляет svn, прежде чем вернуться в пустую ветку.

Мы собираемся создать промежуточное git-репо с двумя ветками.

  • мастер по-прежнему будет указывать на репозиторий SVN,
  • и новая ветка stage позволит нам поддерживать рабочий каталог в чистоте и синхронизировать с последующими изменениями.

Проверьте его суть .

3 голосов
/ 15 июня 2012

https://github.com/hkjels/.dotfiles/blob/master/zsh/git-svn.zsh

Если вы используете zsh, я считаю, что это хороший компаньон для git-svn. Просто поместите ваши хуки в .git / hooks и введите префикс команды с помощью svn -.

Например, ".git / hooks / post-svn-rebase"

Скрипт также позволяет использовать псевдонимы

0 голосов
/ 09 января 2010

В работе есть git-remote-cvs remote helper ; предположительно кто-то сделает то же самое для svn. Обычные перехватчики для удаленных операций должны вызываться до и после вызова этих помощников.

...