簡體   English   中英

bashrc別名,不會混淆git和mercurial

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM