2013-06-05 116 views
2

我使用git-svn在远程SVN存储库上工作,我使用git-flow工作流进行本地开发。Git pre-svn-dcommit hook

不幸的是偶尔有两次我做了svn dcommit而功能分支,而我只想dcommit主。

我想要做的是创建一个pre-svn-dcommit钩子来检查我是否在主分支上。不幸的是,git似乎并没有出现这样的钩子。

我发现两个潜在的方法/解决方案:

  1. https://github.com/padwan-ragavan/preSVNDcommitHook - 我不是太舒服更换的git - svn的二进制虽然。
  2. http://davidsouther.com/2012/04/git-svn-dcommit-hooks/ - 这另一方面看起来有点太复杂,我喜欢(和需要)。

任何建议如何实现这一目标?

+2

可能的重复[如何从本地分支中避免意外dcommit](http://stackoverflow.com/questions/9226528/how-can-i-avoid-an-accidental-dcommit-from-a- local-branch) –

+0

这个线程说这个功能被添加了..但是当我尝试它的时候它似乎没有运行我的提交前钩子:http://git.661346.n2.nabble.com/PATCH-git- SVN钩前方的混帐svn的 - dcommit-td6540838.html –

回答

1

您可以创建一个Git别名抛出当你试图去提交在非主分支的错误:

svndcm = "!f(){ if [[ $(git branch --no-color | sed -n "s/\* \(.*\)/\1/p") == "master" ]]; then git svn dcommit; else echo "Error"; fi }; f" 

包括在你的~/.gitconfig文件的[alias]部分上面一行,然后用git svndcm要提交您的更改。根据自己的喜好修改别名和错误信息:)