Gitflow: getopt unterstützt unter Mac OS X keine Leerzeichen in Argumenten

Erstellt am 4. Feb. 2011  ·  10Kommentare  ·  Quelle: nvie/gitflow

Der Fehler wird wie folgt angezeigt:

$ git flow init    # accept the defaults
$ echo "foo" > foo
$ git add . && git commit -m 'Add foo'    # on develop
$ git flow release start 0.1.0
$ echo "bar" > bar
$ git add . && git commit -m 'Add bar'    # on release/0.1.0
$ git flow release finish -m "Test release" 0.1.0
flags:FATAL the available getopt does not support spaces in options

Das Leerzeichen im -m -Flag enthält ein Leerzeichen, mit dem Mac OS X getopt anscheinend nicht richtig umgehen kann.

Bug

Hilfreichster Kommentar

Ich weiß, dass ich zu spät zu dieser Party komme, aber unten finden Sie kurze Anweisungen für die Methode, mit der ich und meine Kollegen git-flow unter OS X ohne die oben und in # 50 beschriebenen Probleme installieren. Diese Methode läuft auf zwei Dinge hinaus:

  • Verwenden Sie die neueste Version von git-flow, um den Patch zu erhalten, auf den in # 160 verwiesen wird
  • Verwenden Sie mit gnu-getopt die neueste Version von shflags (die ein benutzerdefiniertes Dienstprogramm getopt unterstützt)

Diese Anweisungen stammen aus einem längeren Dokument, das andere Installationsalternativen mit Homebrew enthält, aber keines davon sollte hier wirklich erwähnt werden. Sie alle beinhalten ein gewisses Maß an Bodging aufgrund von Fehlern oder Besonderheiten, was nicht notwendig erscheint, da eine einfachere Methode verfügbar ist. Ich würde gerne Details für Neugierige bereitstellen. Wenn und wenn eine neue Version von Git-Flow an Homebrew versickert, sollte dies alles unnötig sein.

Anleitung:

Laden Sie den neuesten Git-Flow mit den neuesten Shflags herunter und installieren Sie ihn:

$ git clone git://github.com/nvie/gitflow.git
$ cd gitflow
$ git svn clone -r HEAD http://shflags.googlecode.com/svn/trunk/source/1.0 shFlags
$ sudo make install

Sie könnten es auch ohne Git tun:

$ curl -L https://github.com/nvie/gitflow/tarball/develop | tar --exclude '*shFlags' -s '/nvie-\(gitflow\)-[a-z0-9]\{1,\}/\1/' -xvf -
$ cd gitflow
$ curl -L -o gitflow-shFlags http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags
$ sudo make install

Installieren Sie gnu-getopt (mit Homebrew) und konfigurieren Sie shflags für die Verwendung:

$ brew install gnu-getopt
$ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

Starten Sie eine neue Terminalsitzung, um sicherzustellen, dass Ihre Anmeldeshell FLAGS_GETOPT_CMD aufgenommen hat:

$ echo $FLAGS_GETOPT_CMD

Das sollte ungefähr Folgendes zurückgeben: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

Alle 10 Kommentare

Gibt es eine Problemumgehung für dieses Problem? Ich arbeite an OSX und finde eine Lösung. Danke im Voraus.

Da ich ein großer Trottel bin, habe ich textmate als meinen Git-Editor verwendet. Ich wechselte zu einem Terminal-Editor (vi, pico, nano usw.) und hatte keine Probleme mehr.

Dies geschieht wahrscheinlich aufgrund des Fehlers in # 50, der durch # 160 mit variabler Erweiterung behoben werden kann.

Dieser bleibt offen und scheint mit bestimmten Nur-Mac OS X-Gefahren im Zusammenhang mit shFlags verbunden zu sein.

Eine Problemumgehung für dieses Problem finden Sie in meiner Pull-Anfrage unter https://github.com/nvie/gitflow/pull/223 . Ich habe eine Option implementiert, die 'git tag -F' zugeordnet ist, die Nachricht aus einer Datei liest und die Verwendung eines interaktiven Editors vermeidet.

Ich weiß, dass ich zu spät zu dieser Party komme, aber unten finden Sie kurze Anweisungen für die Methode, mit der ich und meine Kollegen git-flow unter OS X ohne die oben und in # 50 beschriebenen Probleme installieren. Diese Methode läuft auf zwei Dinge hinaus:

  • Verwenden Sie die neueste Version von git-flow, um den Patch zu erhalten, auf den in # 160 verwiesen wird
  • Verwenden Sie mit gnu-getopt die neueste Version von shflags (die ein benutzerdefiniertes Dienstprogramm getopt unterstützt)

Diese Anweisungen stammen aus einem längeren Dokument, das andere Installationsalternativen mit Homebrew enthält, aber keines davon sollte hier wirklich erwähnt werden. Sie alle beinhalten ein gewisses Maß an Bodging aufgrund von Fehlern oder Besonderheiten, was nicht notwendig erscheint, da eine einfachere Methode verfügbar ist. Ich würde gerne Details für Neugierige bereitstellen. Wenn und wenn eine neue Version von Git-Flow an Homebrew versickert, sollte dies alles unnötig sein.

Anleitung:

Laden Sie den neuesten Git-Flow mit den neuesten Shflags herunter und installieren Sie ihn:

$ git clone git://github.com/nvie/gitflow.git
$ cd gitflow
$ git svn clone -r HEAD http://shflags.googlecode.com/svn/trunk/source/1.0 shFlags
$ sudo make install

Sie könnten es auch ohne Git tun:

$ curl -L https://github.com/nvie/gitflow/tarball/develop | tar --exclude '*shFlags' -s '/nvie-\(gitflow\)-[a-z0-9]\{1,\}/\1/' -xvf -
$ cd gitflow
$ curl -L -o gitflow-shFlags http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags
$ sudo make install

Installieren Sie gnu-getopt (mit Homebrew) und konfigurieren Sie shflags für die Verwendung:

$ brew install gnu-getopt
$ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

Starten Sie eine neue Terminalsitzung, um sicherzustellen, dass Ihre Anmeldeshell FLAGS_GETOPT_CMD aufgenommen hat:

$ echo $FLAGS_GETOPT_CMD

Das sollte ungefähr Folgendes zurückgeben: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

Es ist 2017 und die Dinge haben sich geändert.

http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags ist umgezogen und gibt 404 zurück.
Verwenden Sie stattdessen https://raw.githubusercontent.com/nvie/shFlags/master/src/shflags

Verwenden Sie das unten stehende aktualisierte Snippet, um git-flow mit shFlags zu installieren

$ curl -L https://github.com/nvie/gitflow/tarball/develop | tar --exclude '*shFlags' -s '/nvie-\(gitflow\)-[a-z0-9]\{1,\}/\1/' -xvf -
$ cd gitflow
$ curl -L -o gitflow-shFlags https://raw.githubusercontent.com/nvie/shFlags/master/src/shflags
$ sudo make install

Befolgen Sie dann die restlichen Anweisungen wie folgt:

Installieren Sie gnu-getopt (mit Homebrew) und konfigurieren Sie shflags für die Verwendung:

$ brew install gnu-getopt
$ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

Starten Sie eine neue Terminalsitzung, um sicherzustellen, dass Ihre Anmeldeshell FLAGS_GETOPT_CMD aufgenommen hat:

$ echo $FLAGS_GETOPT_CMD

das sollte etwas zurückgeben wie: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt .

Wiederholen Sie alles, was Sie damit versuchen.

Was ist, wenn ich diese Schritte gemacht habe und das Echo nichts zeigt? aber .bashrc aktualisiert, Terminal neu geladen.
MacBook-Pro-mac-2: ~ loyi $ echo $ FLAGS_GETOPT_CMD

MacBook-Pro-Mac-2: ~ loyi $

@kahurangitama kann passieren, wenn Sie eine andere Shell wie Zsh verwenden. http://zpalexander.com/switching-to-zsh/

Ich musste den oben genannten Befehl durch diesen ersetzen:
echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.zshrc (anstelle von ~/.bashrc )

Meine Lösung zur Reparatur.

Ich habe bereits git-flow installiert, nicht git-flow-avh . Also führe ich diese Dinge manuell aus, um es zu lösen:

brew install git-flow-avh
brew link git-flow-avh -f

git-flow-avh müssen Sie FLAGS_GETOPT_CMD nicht mehr einrichten.

Rückgabe: 4 Pakete wurden symlinked ... etc ...

Wie @heymartinadams mit der ZSH-Shell sagte, ist hier mein Weg, um Konflikte zu verhindern. Wenn Sie die .zsh-Einstellung so einrichten, müssen Sie .zshrc nicht berühren

.bashrc

source ~/.profile

.zshrc

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

Hoffe, jemand fand dieses Thema hilfreich!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen