不,或者更確切地說,不像你想的那樣。 可以做的是使用一些shell腳本。最明顯的,儘管效率最低,方式可能是寫三個別名:
[alias]
tree = "!f() { set -- $(git --version | \
sed -e 's/git version //' -e 's/\\./ /g'); \
if [ $1 -eq 1 -a $2 -le 7 ]; then git tree17 \"[email protected]\"; \
else git tree18plus \"[email protected]\"; fi; }; f"
tree17 = whatever you want here
tree18plus = whatever you want here
的tree
別名現在調用簡短的shell腳本的測試:這是1.7版本或更早版本(計數1.7.x爲「1.7或更早版本的」 ),還是這個1.8或更高版本?如果1.7或更早,請運行git tree178
,否則運行git tree18plus
。然後你可以讓這些別名做你喜歡的任何事情。
當然,如果你走的太遠了這一點,你可能也只是編寫了一個名爲git-tree
一個shell腳本,並把在您的$PATH
(我把它放在我的$HOME/scripts
目錄;這就是我一直是腳本不管OS和CPU如何,$HOME/bin.amd64
,$HOME/bin.sparc
等都包含OS和/或體系結構相關的二進制文件)。然後,該腳本可以讀取:
#! /bin/sh
#
# test git version, are we less than or equal to $1.$2?
gitvers_le() {
local maj=$1 min=$2
set -- $(git --version | sed -e 's/git version /' -e 's/\./ /g')
if [ $1 -lt $maj ]; then return 0; fi # e.g., 1.x < 2.*
[ $1 -eq $maj -a $2 -le $min ]
}
if gitvers_le 1 7; then
git ...
else
git ...
fi
當您運行git tree
(或實際上任何東西開始git
Git無法在一個標準的地方找到),你有一個可執行的拼寫git-tree
(或git- 任何)在你的$PATH
中,Git會運行它。 「前端」git
只是解析一些通用選項,如-c
和-C
和--work-tree
等,然後調用「後端」git-whatever程序來完成這項工作,這些通用選項以某種方式處理(通常由設置一些環境變量)。
注意,所有這些選項在運行,如果你有一個管理員不斷的升級和/或降級二進制文件,下面這是很好的切換。另一種方法是先對執行一次,然後根據當前正在安裝的任何內容對其進行初始混洗(例如,重命名腳本$HOME/scripts
或重新設置.gitconfig
別名設置),然後重新運行「check and shuffle 「命令 - 您自己編寫的單獨腳本,可以執行所需的任何操作 - 如果和當您的管理員升級或降級您的二進制文件時。
也就是說,「開箱即用」配置是「重新配置和運行」。已經重新配置的配置是「運行」。如果配置的運行失敗,你對自己說:啊哈,我的箱子已經改變了我,我需要明確重新配置。如果您從頭開始重新安裝,您將自己重新設置爲「開箱即用」模式,您可以在其中自動重新配置並運行。
這樣更有效率(不會持續運行時測試),但要求您記住在事情發生變化時應該如何重新配置。