首页 > 解决方案 > git-svn:不在master上时如何防止“dco​​mmit”,“rebase”

问题描述

我正在使用git-svn.

我的问题是,我永远不想在本地分支机构工作git svn rebase一段时间甚至更糟。git svn dcommit只想master分支上执行此操作。

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

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

还有其他想法吗?

标签: git-svn

解决方案


另一个想法是这样的。

function git () {
  if [[ "$1" = svn ]] && [[ "$2" =~ 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与一个bash名为的函数git——它所做的只是检测你想要禁止自己使用的命令,并将它们通过(或不通过)传递给真正的可执行文件(command git)。


推荐阅读