Gitflow: getopt ne prend pas en charge les espaces dans les arguments sous Mac OS X

Créé le 4 févr. 2011  ·  10Commentaires  ·  Source: nvie/gitflow

Le bogue est exposé comme suit:

$ 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

L'espace dans l'indicateur -m contient un espace que le getopt de Mac OS X ne peut pas gérer correctement, apparemment.

Bug

Commentaire le plus utile

Je sais que je suis en retard à cette fête, mais vous trouverez ci-dessous de brèves instructions sur la méthode que mes collègues et moi-même utilisons pour installer git-flow sur OS X sans les problèmes décrits ci-dessus et au # 50. Cette méthode se résume à deux choses:

  • Utilisez la dernière version de git-flow afin d'obtenir le patch référencé dans # 160
  • Utilisez la dernière version de shflags (qui prend en charge un utilitaire getopt spécifié par l'utilisateur) avec gnu-getopt

Ces instructions sont extraites d'un document plus long contenant d'autres alternatives d'installation utilisant Homebrew, mais aucune d'entre elles ne mérite vraiment d'être mentionnée ici. Ils impliquent tous un certain degré de contournement en raison de bugs ou de particularités, ce qui ne semble pas nécessaire car une méthode plus simple est disponible. Je serais heureux de fournir des détails pour les curieux. Si et quand une nouvelle version de git-flow s'infiltre dans Homebrew, tout cela devrait être inutile.

Instructions:

Téléchargez et installez le dernier git-flow avec les derniers shflags:

$ 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

Vous pouvez également le faire sans git:

$ 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

Installez gnu-getopt (avec Homebrew) et configurez les shflags pour l'utiliser:

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

Démarrez une nouvelle session de terminal pour vous assurer que votre shell de connexion a bien détecté FLAGS_GETOPT_CMD:

$ echo $FLAGS_GETOPT_CMD

qui devrait renvoyer quelque chose comme: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

Tous les 10 commentaires

Existe-t-il une solution à ce problème? Je travaille sur OSX et je cherche une solution. Merci d'avance.

Parce que je suis un gros con, j'utilisais textmate comme éditeur git. Je suis passé à un éditeur de terminal (vi, pico, nano, etc.) et je n'ai plus eu de problèmes.

Cela se produit probablement à cause du bogue dans # 50 qui peut être corrigé par # 160 avec une extension variable.

Celui-ci reste ouvert et semble lié à des risques spécifiques à Mac OS X uniquement liés aux shFlags.

Consultez ma demande d'extraction https://github.com/nvie/gitflow/pull/223 pour une solution de contournement à ce problème. J'ai implémenté une option qui correspond à 'git tag -F', en lisant le message à partir d'un fichier et en évitant d'utiliser un éditeur interactif.

Je sais que je suis en retard à cette fête, mais vous trouverez ci-dessous de brèves instructions sur la méthode que mes collègues et moi-même utilisons pour installer git-flow sur OS X sans les problèmes décrits ci-dessus et au # 50. Cette méthode se résume à deux choses:

  • Utilisez la dernière version de git-flow afin d'obtenir le patch référencé dans # 160
  • Utilisez la dernière version de shflags (qui prend en charge un utilitaire getopt spécifié par l'utilisateur) avec gnu-getopt

Ces instructions sont extraites d'un document plus long contenant d'autres alternatives d'installation utilisant Homebrew, mais aucune d'entre elles ne mérite vraiment d'être mentionnée ici. Ils impliquent tous un certain degré de contournement en raison de bugs ou de particularités, ce qui ne semble pas nécessaire car une méthode plus simple est disponible. Je serais heureux de fournir des détails pour les curieux. Si et quand une nouvelle version de git-flow s'infiltre dans Homebrew, tout cela devrait être inutile.

Instructions:

Téléchargez et installez le dernier git-flow avec les derniers shflags:

$ 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

Vous pouvez également le faire sans git:

$ 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

Installez gnu-getopt (avec Homebrew) et configurez les shflags pour l'utiliser:

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

Démarrez une nouvelle session de terminal pour vous assurer que votre shell de connexion a bien détecté FLAGS_GETOPT_CMD:

$ echo $FLAGS_GETOPT_CMD

qui devrait renvoyer quelque chose comme: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

C'est 2017 et les choses ont changé.

http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags a déménagé et renvoie 404.
Utilisez plutôt https://raw.githubusercontent.com/nvie/shFlags/master/src/shflags

Utilisez l'extrait de code mis à jour ci-dessous pour installer git-flow avec shFlags

$ 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

Suivez ensuite le reste des instructions comme suit:

Installez gnu-getopt (avec Homebrew) et configurez les shflags pour l'utiliser:

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

Démarrez une nouvelle session de terminal pour vous assurer que votre shell de connexion a bien détecté FLAGS_GETOPT_CMD:

$ echo $FLAGS_GETOPT_CMD

qui devrait renvoyer quelque chose comme: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt .

Réessayez ce que vous essayez d'en faire.

Et si je faisais ces étapes et que l'écho ne montre rien? mais .bashrc mis à jour, le terminal rechargé.
MacBook-Pro-mac-2: ~ loyi $ echo $ FLAGS_GETOPT_CMD

MacBook-Pro-mac-2: ~ loyi $

@kahurangitama peut arriver si vous utilisez un autre Shell, tel que Zsh. http://zpalexander.com/switching-to-zsh/

J'ai dû remplacer la commande susmentionnée par celle-ci:
echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.zshrc (au lieu de ~/.bashrc )

Ma solution pour réparer.

J'ai déjà installé git-flow , pas git-flow-avh . Donc, j'exécute manuellement ces choses pour le résoudre:

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

git-flow-avh ne vous oblige plus à configurer FLAGS_GETOPT_CMD .

Renvoie: 4 paquets étaient liés par un lien symbolique ... etc ...

Comme @heymartinadams l'a dit avec le shell ZSH, voici ma façon d'éviter les conflits. Continuez à configurer le paramètre .zsh comme cela vous aidera à ne pas avoir à toucher .zshrc

.bashrc

source ~/.profile

.zshrc

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

J'espère que n'importe quel gars a trouvé ce sujet utile!

Cette page vous a été utile?
0 / 5 - 0 notes