Menerapkan Patch Magento CE

15

Per halaman unduhan Magento , di bawah bagian tambalan

Silakan unggah tambalan ke direktori root Magento Anda dan jalankan perintah SSH yang sesuai: Untuk tambalan file dengan ekstensi file `.sh: sh patch_file_name.sh Contoh: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh

Magento merekomendasikan doa langsung dari shperintah untuk menjalankan patch runner mereka. Ekstensi file .shmendukung ini juga.

Namun, jika Anda melihat bagian atas setiap file patch runner , garis shebang menunjuk ke bash.

#!/bin/bash
# Patch apllying tool template
# v0.1.2
# (c) Copyright 2013. Magento Inc.
#

Pemrogram dalam diri saya ingin mempercayai file sumber, tetapi proses wink ingin mematuhi apa yang ditulis di situs Magento, yang sinis bertanya-tanya apakah tambalan telah diuji terhadap perbedaan antara bash dan sh .

Alan Storm
sumber
Proses tambalan harus sesederhana file .diff di-zip. REQUIRED_UTILS='sed patch'semua saya lihat di .shskrip. Dokumen pemutakhiran untuk versi terbaru berbunyi seperti instruksi stereo, dan peningkatan seharusnya tidak terlalu menyakitkan.
B00MER
2
Saya agak membabi buta mengambil tambalan, chmod + x dan menjalankannya. (Yah saya periksa isinya dulu) tapi saya jalankan secara lokal (dev berbasis Mac) sehingga saya bisa git cabang dan berkomitmen untuk cabang uji sebelum menyebarkan.
Barry Carlyon
3
@ B00MER Itu rumit. Saya setuju secara pribadi, tetapi untuk orang yang paham teknologi tetapi tidak paham orang-orang yang paham secara manual menerapkan tambalan sepertinya merupakan langkah yang terlalu jauh. Saya dapat memahami motivasi di balik pemasang tambalan.
Alan Storm
Hanya memikirkan hal ini lagi. Misalnya, shebang lins bisa menjadi #! / Bin / php dan, sh mengeksekusi "cukup" untuk membaca baris shebang dan meneruskan skrip ke program shebang'ed. Pada subjek manual berlaku, tambalan berisi Git Diffs, jadi Anda bisa "dengan mudah" menerapkan sendiri. Tapi, apakah ada argumen untuk meminta Magento menyediakan zip dengan file yang diubah hanya di samping Patch (yang baik-baik saja kecuali untuk pengeditan Core)?
Barry Carlyon
Satu hal lagi. Penggunaan ekstensi file, selain .txt mungkin membuatnya lebih logis untuk yang kurang paham, untuk menghindari adanya file tanpa ekstensi yang mengambang tentang sistem file pengguna lokal. Saya merasa bash dan sh toh bisa dipertukarkan.
Barry Carlyon

Jawaban:

8

Anda harus menggunakan bash, sebenarnya. Pada baris 14 dari tambalan yang Anda tunjukkan secara eksplisit adalah kode ini:

if (( $? != 0 )); then

$((adalah ekspresi aritmatika yang valid di XCU sh, tetapi ((tidak.)

Namun, pada banyak platform mirip UNIX, /bin/shhanya merupakan symlink ke /bin/bash. Ketika dipanggil dengan nama sh, bash memang menonaktifkan sebagian dari perilaku POSIXly-unstrict, tetapi tidak semuanya. Kemungkinan patch ini akan bekerja dengan baik untuk bash yang dipanggil sebagai sh.

kojiro
sumber
Dalam hal ini, skrip tidak dieksekusi di bawah sh, sh sedang membuang ke program baris shebang yang dinyatakan?
Barry Carlyon
Sebenarnya kernel bertanggung jawab untuk menafsirkan shebang. Jika Anda chmod +x script && ./scriptkernel akan mencoba untuk mengeksekusi perintah di baris shebang dengan file skrip sebagai argumen pertama atau kedua. Bergantung pada situasinya, tidak ada jaminan bahwa ada shell yang terlibat dalam pohon proses itu. Jika Anda mengeksekusi shdengan skrip sebagai argumennya, garis shebang akan diabaikan.
kojiro
Jadi itu berarti saya mengikuti instruksi tambalan yang salah. Seperti yang mereka katakan lakukan skrip sh tapi aku hanya ./script Sungguh lucu
Barry Carlyon
-2

Jika itu membantu seseorang di masa depan, saya telah menggunakan Phpstorm untuk menerapkan tambalan dan alat tambalannya sangat bagus. Butuh waktu kurang dari 30 detik untuk menerapkan tambalan tanpa masalah dan Anda juga dapat melihat dan melihat perbedaan yang dimiliki file.

codelogn
sumber