2017-06-01 53 views
-2

目前我的團隊使用Git a.w.a Mercurial進行各種項目,所以我在這裏定義我自己的vcs命令,以便在不同項目/目錄(git & hg)之間實現無縫連接。魚殼:每個目錄的別名

我如何在魚殼中實現這一目標?所以這個別名可以在每個目錄/子目錄的基礎上觸發相應的git或hg命令。

+1

您的問題未指定。使用'$ PWD'變量來決定你是否在git或mercurial項目目錄中並且相應地採取行動是微不足道的。坦率地說,我認爲你所要做的將會導致比解決問題更多的問題。但是,如果您需要有關魚腳本語法的幫助,請告訴我們您已經嘗試了什麼,我們很樂意提供指導。 –

+0

看起來你對所問的內容沒有太多的想法,讓我知道如果你需要任何特定的部分需要位解釋/讓它更通知。 – nehemiah

回答

1

您可以通過運行確定當前的Git分支:

set git_branch (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||') 

和當前汞分支:

set hg_branch (hg branch) 

然後簡單地檢查哪一個是truthy,並從那裏繼續:

if test "$git_branch" 
    git $argv 
else if test "$hg_branch" 
    hg $argv 
else 
    echo "[X] Not in a VCS directory" 
    return 1 
end 

如果你真的想編寫一整套VCS命令,它們是git/hg agnost這需要更多的工作來翻譯所有等價的命令並映射參數等。

雖然這通常不是一個好主意,但它掩蓋了底層系統的實際行爲。最好是向開發人員展示您所使用的回購類型,或者使用像hg-git這樣的實際兼容層。

0

你的函數可以使用git rev-parse --show-toplevel和Mercurial的相應函數來檢查它是否在Git或HG文件夾中。取決於結果,你可以決定執行什麼。