Крючки для git -svn

Можно ли установить привязки для "pull" / "push" ing из/в управляемый репозиторий git-svn?

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

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

Спасибо заранее.

Ответы

Ответ 1

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

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

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

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

David Souther предлагает решение в в своем блоге (апрель 2012 г.)

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

Собиралось создать промежуточный репозиторий git с двумя ветвями.

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

Отметьте его смысл.

Ответ 2

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

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

Например:.git/hooks/post -vv-rebase "

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

Ответ 3

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