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 rebase
和 git 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
有一个名为 git
的 bash
函数——它所做的就是检测你想要自己禁止的命令,并将它们传递(或不传递)给真正的可执行文件 (command git
).
我正在使用 git-svn
。
我的问题是,当我在本地分支机构时,我从不 想要能够执行 git svn rebase
甚至更糟的是 git svn dcommit
。当我在 master
分支时,我 只 想这样做。
如何确保 git
阻止这些操作?
我试图通过 git config branch.<name>.remote
给假人,但这对 git svn rebase
和 git 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
有一个名为 git
的 bash
函数——它所做的就是检测你想要自己禁止的命令,并将它们传递(或不传递)给真正的可执行文件 (command git
).