[英]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.