[英]bashrc alias for not confusing git and mercurial
场景:我更喜欢Mercurial,但我经常需要处理git存储库,因此我最终每天都使用它们。 因此我经常输入:
hg commit -m "message"
...而我想要的地方:
git commit -am "message"
......反之亦然。
我希望我的bashrc文件足够智能,以便它可以通过先发制人地检查我所在的目录是否具有“.git”或“.hg”目录并“修复”语法来检测这种混淆。根据。
基本上我认为我正在寻找的是通过bash函数覆盖两个命令的方法(我知道该怎么做)并以某种方式检查命令的第一部分是以“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
或.hg
目录,然后在你的.bashrc
使用常用命令别名来运行脚本?
因为这是一个选择一个或另一个的问题,也许是类似的东西
#!/bin/bash
if [ -d ./.git ]
then
cmd='git commit -am '
else
cmd='hg commit -m '
fi
cmd=$cmd+$1
echo $cmd
$cmd
将其保存为~/.scripts/commit.sh
,并为bashrc添加别名
alias commit='~/.scripts/commit.sh'
现在,当你想提交时,只需使用commit 'awesome bugfixes'
,它就会回显并为你运行正确的命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.