2

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

不幸的是,有几次我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/ - 另一方面,这对于我的喜好(和需要)来说看起来有点太复杂了。

任何建议如何实现?

4

2 回答 2

1

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

请参阅如何避免来自本地分支的意外 dcommit 以获取应该完全按照您的要求执行的脚本。

于 2013-06-05T11:20:33.093 回答
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 svndcmdcommit 您的更改。根据您的喜好修改别名和错误消息:)

于 2013-06-05T11:16:39.937 回答