我使用 git-svn
处理远程 SVN 存储库,并且使用 git-flow
我的本地开发工作流程。
不幸的是,我在功能分支上时无意中执行了svn dcommit
,而我只想dcommit
master。
我想做的是创建一个 pre-svn-dcommit
Hook 来检查我是否在 master 分支上。不幸的是 git 似乎没有附带这样的钩子(Hook)。
我确实找到了两种潜在的方法/解决方案:
- https://github.com/padwan-ragavan/preSVNDcommitHook - 不过,我不太愿意替换 git-svn 二进制文件。
- http://davidsouther.com/2012/04/git-svn-dcommit-hooks/ - 另一方面,对于我的喜好(和需求)来说,这看起来有点太复杂了。
有什么建议可以实现这一点吗?
最佳答案
您可以创建一个 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
提交更改。根据您的喜好修改别名和错误消息:)
关于Git pre-svn-dcommit 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16936924/