Gitflow: getopt tidak mendukung spasi dalam argumen di Mac OS X

Dibuat pada 4 Feb 2011  ·  10Komentar  ·  Sumber: nvie/gitflow

Bug tersebut diekspos sebagai berikut:

$ 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

Spasi pada flag -m berisi spasi yang tampaknya tidak dapat ditangani oleh getopt Mac OS X dengan benar.

Bug

Komentar yang paling membantu

Saya tahu saya terlambat ke pesta ini, tetapi di bawah ini adalah instruksi singkat untuk metode yang saya dan kolega saya gunakan untuk menginstal git-flow di OS X tanpa masalah yang dijelaskan di atas dan di # 50. Metode ini bermuara pada dua hal:

  • Gunakan versi terbaru git-flow untuk mendapatkan patch yang direferensikan di # 160
  • Gunakan versi terbaru shflag (yang mendukung utilitas getopt yang ditentukan pengguna) dengan gnu-getopt

Petunjuk ini dikutip dari dokumen yang lebih panjang yang berisi alternatif penginstalan lain yang menggunakan Homebrew, tetapi tidak ada yang benar-benar disebutkan di sini. Mereka semua melibatkan beberapa tingkat bodging karena bug atau keanehan, yang tampaknya tidak diperlukan karena metode yang lebih sederhana tersedia. Saya akan dengan senang hati memberikan detail bagi yang penasaran. Jika dan saat rilis baru git-flow meresap ke Homebrew, ini semua seharusnya tidak diperlukan.

Instruksi:

Unduh dan instal git-flow terbaru dengan shflag terbaru:

$ 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

Anda juga bisa melakukannya tanpa 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

Instal gnu-getopt (dengan Homebrew) dan konfigurasikan shflag untuk menggunakannya:

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

Mulailah sesi terminal baru untuk memastikan shell login Anda mengambil FLAGS_GETOPT_CMD:

$ echo $FLAGS_GETOPT_CMD

yang seharusnya mengembalikan sesuatu seperti: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

Semua 10 komentar

Apakah ada solusi untuk masalah ini? Saya sedang mengerjakan OSX dan mencari solusinya. Terima kasih sebelumnya.

Karena saya sangat bodoh, saya menggunakan textmate sebagai editor git saya. Saya beralih ke editor terminal (vi, pico, nano, dll) dan tidak memiliki masalah lagi.

Ini mungkin terjadi karena bug di # 50 yang mungkin diperbaiki oleh # 160 dengan ekspansi variabel.

Yang ini tetap terbuka dan tampaknya terkait dengan bahaya khusus Mac OS X yang terkait dengan shFlags.

Lihat permintaan tarik saya https://github.com/nvie/gitflow/pull/223 untuk solusi bagi masalah ini. Saya menerapkan opsi yang memetakan ke 'git tag -F', membaca pesan dari file dan menghindari kebutuhan untuk menggunakan editor interaktif.

Saya tahu saya terlambat ke pesta ini, tetapi di bawah ini adalah instruksi singkat untuk metode yang saya dan kolega saya gunakan untuk menginstal git-flow di OS X tanpa masalah yang dijelaskan di atas dan di # 50. Metode ini bermuara pada dua hal:

  • Gunakan versi terbaru git-flow untuk mendapatkan patch yang direferensikan di # 160
  • Gunakan versi terbaru shflag (yang mendukung utilitas getopt yang ditentukan pengguna) dengan gnu-getopt

Petunjuk ini dikutip dari dokumen yang lebih panjang yang berisi alternatif penginstalan lain yang menggunakan Homebrew, tetapi tidak ada yang benar-benar disebutkan di sini. Mereka semua melibatkan beberapa tingkat bodging karena bug atau keanehan, yang tampaknya tidak diperlukan karena metode yang lebih sederhana tersedia. Saya akan dengan senang hati memberikan detail bagi yang penasaran. Jika dan saat rilis baru git-flow meresap ke Homebrew, ini semua seharusnya tidak diperlukan.

Instruksi:

Unduh dan instal git-flow terbaru dengan shflag terbaru:

$ 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

Anda juga bisa melakukannya tanpa 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

Instal gnu-getopt (dengan Homebrew) dan konfigurasikan shflag untuk menggunakannya:

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

Mulailah sesi terminal baru untuk memastikan shell login Anda mengambil FLAGS_GETOPT_CMD:

$ echo $FLAGS_GETOPT_CMD

yang seharusnya mengembalikan sesuatu seperti: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt

Ini 2017 dan banyak hal telah berubah.

http://shflags.googlecode.com/svn/trunk/source/1.0/src/shflags telah pindah dan mengembalikan 404.
Alih-alih, gunakan https://raw.githubusercontent.com/nvie/shFlags/master/src/shflags

Gunakan cuplikan yang diperbarui di bawah ini untuk menginstal git-flow dengan 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

Kemudian ikuti instruksi selanjutnya sebagai:

Instal gnu-getopt (dengan Homebrew) dan konfigurasikan shflag untuk menggunakannya:

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

Mulailah sesi terminal baru untuk memastikan shell login Anda mengambil FLAGS_GETOPT_CMD:

$ echo $FLAGS_GETOPT_CMD

yang seharusnya menghasilkan sesuatu seperti: /usr/local/Cellar/gnu-getopt/1.1.4/bin/getopt .

Coba lagi apa pun yang Anda coba lakukan dengannya.

bagaimana jika saya melakukan langkah-langkah itu dan gema tidak menunjukkan apa-apa? tetapi .bashrc diperbarui, terminal dimuat ulang.
MacBook-Pro-mac-2: ~ loyi $ echo $ FLAGS_GETOPT_CMD

MacBook-Pro-mac-2: ~ loyi $

@kahurangitama bisa terjadi jika Anda menggunakan Shell lain, seperti Zsh. http://zpalexander.com/switching-to-zsh/

Saya harus mengganti perintah yang disebutkan di atas dengan yang ini:
echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.zshrc (bukan ~/.bashrc )

Solusi saya untuk memperbaiki.

Saya sudah menginstal git-flow , bukan git-flow-avh . Jadi saya menjalankan hal-hal ini secara manual untuk menyelesaikannya:

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

git-flow-avh tidak mengharuskan Anda menyiapkan FLAGS_GETOPT_CMD lagi.

Pengembalian: 4 paket terhubung ... dll ...

Seperti yang dikatakan @heymartinadams dengan ZSH shell, inilah cara saya untuk mencegah konflik. Terus setup .zsh pengaturan seperti itu akan membantu Anda tidak perlu menyentuh .zshrc

.bashrc

source ~/.profile

.zshrc

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

Semoga setiap pria menemukan topik ini bermanfaat!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

nvaken picture nvaken  ·  5Komentar

harshadyeola picture harshadyeola  ·  4Komentar

sbellware picture sbellware  ·  12Komentar

primeminister picture primeminister  ·  4Komentar

boryn picture boryn  ·  6Komentar