git-svn:当不在 master 上时如何防止 "dcommit"、"rebase"

git-svn: How to prevent "dcommit", "rebase" when not on master

我正在使用 git-svn

我的问题是,当我在本地分支机构时,我从不 想要能够执行 git svn rebase 甚至更糟的是 git svn dcommit。当我在 master 分支时,我 想这样做。

如何确保 git 阻止这些操作?

我试图通过 git config branch.<name>.remote 给假人,但这对 git svn rebasegit svn dcommit 没有帮助。

还有其他想法吗?

另一个想法是这样的。

function git () {
  if [[ "" = svn ]] && [[ "" =~ dcommit|rebase ]]; then
    # allow git-svn dcommit/rebase only on master
    if git branch --show-current | grep -q master; then
      echo "Master branch check passed" >&2
      command git "$@"
    else
      echo "Disallowed - not on master" >&2
      return 1
    fi
  else
    # subcommand filter passthrough
    command git "$@"
  fi
}

这个影子 /usr/bin/git 有一个名为 gitbash 函数——它所做的就是检测你想要自己禁止的命令,并将它们传递(或不传递)给真正的可执行文件 (command git).