场景:我更喜欢 Mercurial,但我经常需要处理 git 存储库,所以我最终每天都使用它们。因此,我经常输入:
hg commit -m "message"
...我想要的地方:
git commit -am "message"
...反之亦然。
我希望我的 bashrc 文件足够智能,以便它可以通过先发制人地检查我所在的目录是否有“.git”或“.hg”目录和“修复”来检测这种混淆符合语法。
基本上我认为我正在寻找的是一种通过 bash 函数覆盖这两个命令的方法(我知道该怎么做)并以某种方式检查命令的第一部分是否以“hg ci -m”或“hg ci -m”开头“git ci -am”(这个我不知道)。
我不确定 bashrc 别名/函数是否可以扩展到这样的表达水平,但我确定我不是唯一被这种“混淆”困扰的人,所以我想知道是否有人已经想出了一个解决方案。
最佳答案
我对 hg
了解不够,无法建议如何重写命令,但这里有一些方便的功能:
is_git_repo() { command git rev-parse --git-dir &> /dev/null; }
is_hg_repo() { command hg root &> /dev/null; }
示例用法:
git() {
if is_hg_repo
then
echo "This is is a hg repo, you silly goose!"
return 1
else
command git "$@"
fi
}
hg() {
if is_git_repo
then
echo "Surely you're joking... this is git repo!"
return 1
else
command hg "$@"
fi
}
关于git - bashrc 别名,不要混淆 git 和 mercurial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096996/