Nein, oder genauer, nicht ganz so, wie Sie denken. Was Sie können tun ist ein bisschen Shell-Skript verwenden. Am deutlichsten, wenn auch am wenigsten effizienten, kann Art und Weise drei Aliase zu schreiben sein:
[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
Die tree
alias ruft nun der kurze Shell-Skript-Test: Diese Version ist 1.7 oder früher (Zählung 1.7.x als „1,7 oder früher“), oder ist diese Version 1.8 oder später? Wenn 1.7 oder früher, führen Sie git tree178
aus, andernfalls führen Sie git tree18plus
aus. Sie können dann diese Aliase tun, was immer Sie möchten.
Natürlich, wenn Sie so weit gehen, dann kann man auch schreiben Sie einfach ein Shell-Skript git-tree
benannt und setzen das in Ihrem $PATH
(ich es in meinem $HOME/scripts
Verzeichnis setzen würde, das ist, wo ich Skripte, die man das sind Dies gilt unabhängig vom Betriebssystem und der CPU, während $HOME/bin.amd64
, $HOME/bin.sparc
usw. OS- und/oder architekturabhängige Binärdateien enthalten. Das Skript kann dann lesen:
#! /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
Wenn Sie laufen git tree
(oder in der Tat nichts mit git
beginnend Git kann nicht in einem Standard-Platz finden), und Sie haben eine ausführbare git-tree
geschrieben (oder git- was) In Ihrem $PATH
wird Git das ausführen. Das "Frontend" git
analysiert einfach einige universelle Optionen, wie -c
und -C
und --work-tree
und so weiter und ruft dann das "Backend" git-was auch immer Programm auf, um die Arbeit zu tun, mit diesen universellen Optionen irgendwie gehandhabt (normalerweise durch einige Umgebungsvariablen einstellen).
Beachten Sie, dass alle diese Optionen bei Laufzeit wechseln, was gut ist, wenn Sie ein Admin haben ständig aktualisieren und/oder Herabstufung unter Ihnen Ihre Binärdateien. Eine weitere Methode besteht darin, Ihre Einrichtung einmal zu machen, zuerst Elemente umherzuwechseln (zB Skripte in $HOME/scripts
umzubenennen oder .gitconfig
Alias-Einstellungen neu zu setzen), passend für alles, was gerade installiert ist, und dann das "check and shuffle" erneut auszuführen "command - ein separates Skript, das Sie selbst schreiben, das alles tut, was Sie brauchen - ob und wann Ihr Administrator Ihre Binärdateien aktualisiert oder heruntergestuft.
Das heißt, die "out of the box" Konfiguration ist "rekonfigurieren und ausführen". Die bereits konfigurierte Konfiguration wird "ausgeführt". Wenn der konfigurierte Lauf fehlschlägt, sagst du zu dir selbst: Aha, meine Box wurde auf mich geändert, ich muss sie explizit neu konfigurieren. Wenn Sie von Grund auf neu installieren, versetzen Sie sich in den "out of the box" -Modus zurück, in dem Sie automatisch neu konfiguriert und ausgeführt werden.
Dies ist effizienter (kein konstanter Laufzeittest), erfordert aber, dass Sie sich daran erinnern, was zu tun ist, um sich neu zu konfigurieren, wenn sich die Dinge ändern.