Git pre-svn-dcommit hook

时间:2013-06-05 09:58:40

标签: git git-svn githooks

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

不幸的是,偶然的几次我在功能分支上做了svn dcommit,而我只想dcommit掌握。{/ p>

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

我确实找到了两种可能的方法/解决方案:

  1. https://github.com/padwan-ragavan/preSVNDcommitHook - 我对替换git-svn二进制文件感到不太舒服。
  2. http://davidsouther.com/2012/04/git-svn-dcommit-hooks/ - 另一方面,这看起来有点太复杂了,不符合我的喜好(和需要)。
  3. 有关如何实现这一目标的任何建议吗?

2 个答案:

答案 0 :(得分:1)

您可以创建一个Git别名,当您尝试在非主分支上提交时会抛出错误:

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

[alias]文件的~/.gitconfig部分中添加上述内容,然后使用git svndcm提交您的更改。根据您的喜好修改别名和错误消息:)

答案 1 :(得分:1)

正如您所说,使用Git本身没有简单的解决方案。我通过使用shell来捕获git的调用并在调用git之前添加其他功能来实现类似的功能。

请参阅How can I avoid an accidental dcommit from a local branch,了解一个应该完全符合您要求的脚本。