Mina: Bantuan yang diinginkan: Windows mingw32 shell (git bash) - CRLF

Dibuat pada 10 Jan 2013  ·  12Komentar  ·  Sumber: mina-deploy/mina

Hal pertama yang pertama - terima kasih untuk alat yang hebat :+1:

Saya menggunakan Windows sekarang (ya...) dan mencoba menggunakan dengan Mina.

Saya menemukan bahwa skrip bash yang dihasilkan pada Windows Git Bash (shell standar mingw32) memiliki akhiran baris CRLF, tetapi linux menggunakan LF, jadi ada kesalahan seperti "EOF yang tidak terduga".

Saya menulis skrip yang dihasilkan ini ke file, mengonversi akhir baris ke LF dan menggunakannya secara manual - semuanya berfungsi dengan baik.

Apakah ini fitur Mina atau bug mingw32 atau salah konfigurasi? :)

enhancement

Komentar yang paling membantu

Sekarang saya tahu mengapa.
Metode Shellwords.escape untuk Ruby tidak mendukung lingkungan windows.
Jadi, untuk memperbaikinya, saya menambahkan sedikit kode ke lib/mina.rb.
Berhasil!

Saya seorang pemula, jadi .... tapi bagaimanapun, itu berhasil.

# lib/mina.rb
module Mina
  #if windows os
  require 'rbconfig'
  is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/) 
  if is_windows
    module Shellwords
      def shellescape(str)
          '"' + str.gsub(/\\(?=\\*\")/, "\\\\\\").gsub(/\"/, "\\\"").gsub(/\\$/, "\\\\\\").gsub("%", "%%") + '"'
      end

      module_function :shellescape
      class << self
        alias escape shellescape
      end
    end
  end
...

Semua 12 komentar

Hm. Apakah Anda mencoba untuk menyebarkan ke server Windows, atau berjalan di workstation Windows?

Terima kasih atas perhatiannya—sayangnya saat ini kami tidak memiliki mesin Windows untuk diuji, tetapi saya kira kami dapat mengerjakan beberapa perbaikan hipotetis.

Saya mengalami masalah yang sama. Di Win7x64 mencoba menyebarkan ke CentOS

 bash: -c line 106: unexpected EOF while looking for a matching `"'

Salah satu rekan kerja saya juga mengalami masalah ini saat menerapkan ke server Ubuntu. Dia menggunakan Vista (tidak ada komentar) dengan Git Bash (mingw32) dan kami menggunakan Mina 0.3.0.

Saya mendapat kesalahan yang sama dengan @rezen pada Windows 8.1 x64 mencoba menyebarkan ke Ubuntu LTS 12.04.3 x64.

@reterius saya memiliki kesalahan yang sama di windows.
Bagaimana menulis skrip yang dihasilkan ini ke file, mengonversi akhir baris ke LF dan menggunakannya secara manual?

Sekarang saya tahu mengapa.
Metode Shellwords.escape untuk Ruby tidak mendukung lingkungan windows.
Jadi, untuk memperbaikinya, saya menambahkan sedikit kode ke lib/mina.rb.
Berhasil!

Saya seorang pemula, jadi .... tapi bagaimanapun, itu berhasil.

# lib/mina.rb
module Mina
  #if windows os
  require 'rbconfig'
  is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/) 
  if is_windows
    module Shellwords
      def shellescape(str)
          '"' + str.gsub(/\\(?=\\*\")/, "\\\\\\").gsub(/\"/, "\\\"").gsub(/\\$/, "\\\\\\").gsub("%", "%%") + '"'
      end

      module_function :shellescape
      class << self
        alias escape shellescape
      end
    end
  end
...

bekerja dengan baik!! bukan pemula .... ahli

Apakah tweak ini berhasil masuk ke basis kode?

Apakah ini akan membantu memajukan masalah ini, jika saya memasukkan perbaikan @insub ke dalam permintaan tarik?

@coredevelopers : ada alasan mengapa ini tidak diambil? Solusi dengan karya insub. Mengapa tidak melakukan patch kecil untuk mendukung komunitas windows?

Ia bekerja memang. Terima kasih!

Bisakah seseorang menguji master github jika ini berhasil?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat