Git pre-svn-dcommit 钩子(Hook)

标签 git git-svn githooks

我使用 git-svn 处理远程 SVN 存储库,并且使用 git-flow我的本地开发工作流程。

不幸的是,我在功能分支上时无意中执行了svn dcommit,而我只想dcommit master。

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

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

  1. https://github.com/padwan-ragavan/preSVNDcommitHook - 不过,我不太愿意替换 git-svn 二进制文件。
  2. 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/

相关文章:

Git Rebase 还是 Git Merge?

node.js - 我有一个被忽略的文件夹,但每当我将 'git status' 作为未跟踪文件执行时,它仍然显示

git svn dcommit 总是以 "Cannot dcommit with a dirty index."失败

git - 在 SVN 到 Git 迁移期间将 SVN 远程分支和标签转换为本地 Git 分支/标签的正确方法是什么

如果存在具有不同扩展名的文件,则 Gitignore 文件

Git 专门列出一个分支的 stash

git - 如何通过Docker Compose中的env vars为Jhipster Registry设置Spring Cloud Server的Git URI?

git - 如果我忘记在 merge 前执行 git svn rebase 怎么办?

gitlab-ci - 用于检查代码格式的 gitlab CI 管道

git - 我如何制作一个 git 钩子(Hook)来修改然后镜像一个 git 存储库?