Ini ialah arahan makepatchp yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
makepatch - buat skrip untuk mengemas kini pepohon sumber
SINOPSIS
makepatch [ pilihan ] lama-src baru-src
Pengenalan
Secara tradisinya, pokok sumber dikemas kini dengan tampalan program, tampalan pemprosesan
maklumat yang dijana oleh diff program. walaupun diff and tampalan melakukan yang sangat baik
kerja menampal kandungan fail, kebanyakan versi tidak mengendalikan penciptaan dan pemadaman fail dan
direktori, dan pelarasan mod fail dan setem masa. Versi yang lebih baharu daripada diff and tampalan
nampaknya boleh mencipta fail, dan versi yang sangat baharu tampalan boleh mengeluarkan fail. Tetapi
itu sahaja.
Satu lagi masalah biasa ialah kit tampalan biasanya dimuat turun dari Internet, atau
dihantar melalui mel elektronik. Selalunya wajar untuk mengesahkan ketepatan a
kit tampalan sebelum cuba menerapkannya.
. makepatch pakej direka untuk mengatasi batasan ini.
DESCRIPTION
. makepatch pakej mengandungi dua program Perl: makepatch and applypatch.
makepatch akan menjana kit tampalan daripada dua pokok sumber. Ia merentasi sumber
direktori dan menjalankan a diff pada setiap pasangan fail yang sepadan, mengumpul output
ke dalam kit tampalan. Ia mengetahui tentang konvensyen untuk kit tampalan: jika fail bernama
"patchlevel.h" wujud, ia dikendalikan terlebih dahulu, jadi tampalan boleh semak versi sumber
pokok. Juga, untuk menangani versi yang tidak sempurna tampalan yang sedang digunakan, ia membekalkan
""Index:"" dan ""Prereq:"" baris, jadi tampalan boleh mencari dengan betul fail untuk ditampal, dan ia
menempatkan semula patch ke direktori semasa untuk mengelakkan masalah dengan mencipta fail baharu.
Senarai fail boleh ditentukan dalam apa yang dipanggil NYATA fail, tetapi ia juga boleh
dihasilkan dengan melintasi pokok sumber secara rekursif. Fail boleh dikecualikan menggunakan shell
kad bebas gaya dan corak regex Perl.
Tetapi bukan itu! makepatch juga memasukkan beberapa maklumat tambahan dalam kit tampalan
untuk digunakan oleh applypatch program.
Adalah penting untuk menekankan bahawa kit tampalan yang dijana masih merupakan input yang sah untuknya tampalan.
Apabila digunakan dengan tampalan, tiada pengesahan dan masalah mungkin timbul apabila fail baharu
perlu diwujudkan. makepatch prepends skrip shell kecil di hadapan kit patch itu
mencipta fail dan direktori yang diperlukan untuk proses tampalan. Kalau tak boleh lari
applypatch atas sebab tertentu, anda boleh menjalankan kit tampalan as a shell skrip untuk menyediakan
direktori sumber untuk proses menampal.
. applypatch program akan melakukan perkara berikut:
· Ia akan mengesahkan secara meluas bahawa kit tampalan telah lengkap dan tidak rosak semasa
pemindahan.
· Ia akan menggunakan beberapa heuristik untuk mengesahkan bahawa direktori di mana tampalan akan berada
diterapkan sememangnya mengandungi sumber yang diharapkan.
· Ia mencipta fail dan direktori mengikut keperluan.
· Ia menggunakan tampalan dengan menjalankan tampalan program.
· Setelah selesai, fail usang, direktori dan fail ".orig" dialih keluar, mod fail
fail baharu ditetapkan, dan cap masa semua fail yang ditampal dilaraskan.
Perhatikan bahawa applypatch hanya memerlukan tampalan program. Ia tidak bergantung pada cangkerang atau cangkerang
alatan. Ini memungkinkan untuk menggunakan tampung pada sistem bukan Unix.
Umum penggunaan
Katakan anda mempunyai arkib `"pkg-1.6.tar.gz"' yang mengandungi sumber untuk pakej `"pkg"'
versi 1.6 dan pepohon direktori `"pkg-1.7"' yang mengandungi sumber untuk versi 1.7. The
arahan berikut akan menghasilkan kit tampalan yang mengemas kini sumber 1.6 ke dalam 1.7
versi:
makepatch pkg-1.6.tar.gz pkg-1.7 > pkg-1.6-1.7.patch
Untuk menggunakan skrip ini, pergi ke direktori yang mengandungi sumber 1.6 dan suapan skrip
kepada applypatch:
cd lama/pkg-1.6
applypatch pkg-1.6-1.7.patch
applypatch akan mengesahkan bahawa ia dilaksanakan di tempat yang betul dan membuat semua perlu
kemas kini.
Secara lalai, makepatch akan memberikan beberapa baris maklumat kemajuan, contohnya:
Mengekstrak pkg-1.6.tar.gz ke /tmp/mp21575.d/old...
MANIFEST Manifes untuk pkg-1.6 mengandungi 1083 fail.
MANIFEST Manifes untuk pkg-1.7 mengandungi 1292 fail.
Memproses senarai fail...
Mengumpul tampalan...
266 fail perlu ditampal.
216 fail dan 8 direktori perlu dibuat.
7 fail perlu dialih keluar.
applypatch tidak akan memberikan maklumat maklum balas secara lalai.
Makepatch hujah
makepatch memerlukan dua hujah: old_src and new_src.
lama-src
Ini adalah nama sama ada satu fail atau direktori yang mengandungi salinan fail
versi lama fail sasaran; dengan kata lain, salinan fail sebelum kepada mana-mana
perubahan.
Sebagai alternatif, ia mungkin nama arkib yang menyimpan fail untuk diproses.
Format arkib yang dibenarkan ialah tar gzip (nama berakhir dengan "".tar.gz"" atau "".tgz""),
tar bzip (nama berakhir dengan "".tar.bz2""), tar biasa (nama berakhir dengan "".tar"" dan zip
(nama berakhir dengan "".zip"").
baru-src
Ini adalah nama sama ada satu fail atau direktori yang mengandungi salinan fail
versi baharu fail sasaran; dengan kata lain, salinan fail selepas yang
pengubahsuaian telah dibuat.
Sebagai alternatif, ia mungkin nama arkib yang menyimpan fail untuk diproses.
Skrip tampalan yang dihasilkan oleh makepatch akan menguruskan membuat fail baharu dan
direktori, kemas kini fail sedia ada dan alih keluar fail dan direktori yang tiada lagi
Hadir dalam baru-src direktori.
NYATA fail
Tujuan fail manifes adalah untuk menyediakan senarai fail yang membentuk pakej.
Fail manifes secara tradisinya dipanggil ""MANIFEST"" dan berada dalam direktori peringkat atas
daripada pakej tersebut.
Walaupun tiada standard formal untuk kandungan fail manifes, makepatch menggunakan
peraturan berikut:
· Jika baris kedua daripada fail manifes kelihatan seperti baris pemisah (cth
kosong, atau mengandungi hanya sempang), ia dibuang dan begitu juga baris pertama.
· Baris dan baris kosong yang bermula dengan "#" diabaikan.
· Jika terdapat berbilang "perkataan" yang dipisahkan ruang pada satu baris, perkataan pertama akan dipertimbangkan
menjadi nama fail.
Lalai rawatan
Secara lalai, makepatch mencari fail bernama ""MANIFEST"" dalam direktori peringkat atas
pokok sumber lama dan baru. Jika fail ini (atau salah satu daripadanya) ditemui, ia adalah
digunakan. Jika tiada fail manifes ditemui, pakej tersebut diandaikan terdiri daripada semua fail
dalam direktori.
Nama lalai bagi fail manifes lalai boleh diubah suai dengan pilihan baris arahan
""-automanifest"", lihat Bahagian "Pilihan baris arahan".
Secara eksplisit menamakan of nyata fail
Pilihan baris arahan ""-oldmanifest"" dan ""-newmanifest"" boleh digunakan untuk secara eksplisit
tetapkan fail manifes lama dan baharu. Pilihan ""-manifest"" ialah cara singkat untuk menetapkan satu
fail manifes untuk kedua-dua pepohon sumber lama dan baharu.
Menindas nyata fail pemprosesan
Pilihan baris perintah ""-nomanifest"" boleh digunakan untuk menyekat semua pemprosesan fail manifes.
Pakej ini diandaikan terdiri daripada semua fail dalam direktori sumber.
Makepatch pilihan
makepatch mengambil beberapa pilihan untuk mengawal kelakuannya. Pilihan biasanya dinyatakan pada
baris arahan, tetapi makepatch boleh mengambil pilihan daripada tiga sumber berikut
Perintah:
· Pembolehubah persekitaran MAKEPATCHINIT.
Apabila pembolehubah persekitaran ini ditetapkan kandungannya dianggap sebagai baris arahan
pilihan yang diproses semasa permulaan. Semua pilihan biasa dibenarkan, ditambah satu:
-rcfile nama fail. Pilihan -rcfile boleh digunakan untuk menentukan fail pilihan ganti, lihat
di bawah.
· Fail pilihan.
makepatch mula-mula cuba memproses fail bernama /etc/makepatchrc. (Ini adalah Unix-isme.)
Tidak mengapa jika fail ini tiada.
Seterusnya, makepatch akan memproses fail bernama .makepatchrc dalam direktori rumah pengguna,
jika ia wujud.
Selepas memproses fail ini, makepatch akan memproses fail bernama .makepatchrc dalam
direktori semasa, jika ia wujud. Nama alternatif untuk fail ini boleh ditentukan
dengan pilihan -rcfile dalam pembolehubah persekitaran MAKEPATCHINIT. Ini adalah satu-satunya cara untuk
nyatakan nama fail pilihan alternatif.
Dalam semua fail pilihan, baris kosong dan baris bermula dengan ";" atau "#" diabaikan. Semua
talian lain dianggap mengandungi pilihan sama seperti ia telah dibekalkan
baris arahan.
· Barisan arahan.
Perintah selaras pilihan
Pilihan dipadankan tidak sensitif huruf besar dan boleh disingkatkan kepada keunikan.
-penerangan teks
Sediakan teks deskriptif untuk tampung ini. Pelbagai -penerangan pilihan mungkin
dibekalkan.
Jika tiada penerangan diberikan, program cuba meneka satu. Ini biasanya mungkin
jika kedua-dua direktori adalah nama ringkas, cth '"pkg-1.16"'. Jika tiada penerangan boleh
ditentukan, program akan meminta satu.
-berbeza cmd
Jika dinyatakan, cmd ialah arahan yang akan digunakan untuk menjana perbezaan antara
dua versi fail. Jika tidak dinyatakan, arahan ini lalai kepada ""diff -c"".
Untuk hasil terbaik, hanya gunakan ""diff -c"" atau ""diff -u"". Walau apa pun, ia kemestian menghasilkan
sama ada konteks atau output perbezaan bersatu.
-paras tampalan pfile
Jika dinyatakan, pfile menunjukkan fail ganti yang akan digunakan sebagai ganti
"patchlevel.h".
-automanifest mfile
makepatch akan secara automatik menggunakan fail manifes nama yang diberikan jika ia muncul dalam
direktori tersebut. Nama lalai ialah "NYATA".
-nomanifest
Sekat menggunakan fail manifes.
-nyata mfile
Jika dinyatakan, mfile menunjukkan nama fail manifes yang terdiri daripada senarai
daripada fail yang terkandung dalam kedua-dua lama dan juga baru direktori.
-manifest lama omfile
Jika dinyatakan, omfile menunjukkan nama fail manifes yang terdiri daripada senarai
daripada fail yang terkandung dalam lama direktori. Pilihan ini direka untuk digunakan dalam
sempena -manifest baru pilihan. Perhatikan bahawa lama and baru direktori mesti
tetap ditunjukkan.
-manifest baru nmfile
Jika dinyatakan, nmfile menunjukkan nama fail manifes yang terdiri daripada senarai
daripada fail yang terkandung dalam baru direktori. Pilihan ini direka untuk digunakan dalam
sempena -manifest lama pilihan. Perhatikan bahawa lama and baru direktori mesti
tetap ditunjukkan.
-[tidak]berulang
makepatch berulang melalui direktori secara lalai. Pilihan -norecurse menghalang
rekursi melebihi direktori awal.
-[tidak]mengikuti
Jika ditetapkan, pautan simbolik ke direktori dilalui seolah-olah ia adalah direktori sebenar.
-infocmd arahan
Jika dinyatakan, output berjalan arahan akan ditambah sebelum setiap bahagian tampalan.
arahan akan menjalani penggantian berikut terlebih dahulu: %oP akan digantikan dengan
nama fail lama, %nP akan digantikan dengan nama fail baharu. "%%" akan jadi
digantikan dengan "%" tunggal; jujukan "%" lain boleh ditambah dalam versi akan datang. Apabila a
fail baharu sedang dibuat, nama fail baharu akan dibekalkan untuk kedua-dua %oP dan
%nP.
Ambil perhatian bahawa %oP dan %nP dimodelkan selepas jujukan "%" bagi mencari -cetakf.
-kecualikan pola
Jika dinyatakan, fail yang sepadan dengan corak shell pola akan dikecualikan. Sahaja
aksara kad bebas "*" dan "?", dan kelas aksara "[...]" dikendalikan. Pelbagai
-kecualikan pilihan mungkin dibekalkan.
-kecualikan-regex pola
Jika dinyatakan, fail dan direktori yang sepadan dengan corak ungkapan biasa Perl
pola akan dikecualikan. Pelbagai -kecualikan-regex pilihan mungkin dibekalkan.
-[tidak]tidak termasuk-standard
Tetapkan secara lalai. Jika ditetapkan, set biasa fail dan direktori diabaikan.
Lihat juga bahagian "Pola Kecualikan Standard".
-[tidak]kecualikan-cvs
Jika ditetapkan, fail dan direktori yang biasanya merupakan sebahagian daripada sistem kawalan versi CVS adalah
dikecualikan.
Selain itu, fail ".cvsignore" dihormati sama seperti CVS melakukannya.
Lihat juga bahagian "Pola Kecualikan Standard".
-[tidak]exclude-rcs
Jika ditetapkan, fail dan direktori yang biasanya merupakan sebahagian daripada sistem kawalan versi RCS adalah
dikecualikan.
Lihat juga bahagian "Pola Kecualikan Standard".
-[tidak]kecualikan-sccs
Jika ditetapkan, fail dan direktori yang biasanya merupakan sebahagian daripada sistem kawalan versi SCCS adalah
dikecualikan.
Lihat juga bahagian "Pola Kecualikan Standard".
-[tidak]kecualikan-vc
Pendek untuk tetapan (semula). -exclude-rcs, -kecuali-cvs, dan -kecuali-sccs.
-[tidak]abaikan-cvs-keywords
Perbezaan dalam data kata kunci CVS (cth. "Id", "Header", "Semakan") diabaikan,
dengan syarat tidak ada perbezaan lain dalam sekeping yang sama. Pilihan ini lulus sangat
regex berbulu ke --abaikan-padanan-garisan pilihan untuk diff program, dan seterusnya
memerlukan GNU diff. Sekatan ini mungkin ditarik balik dalam versi akan datang.
-[tidak]abaikan-rcs-keywords
Sama seperti -[tidak]abaikan-cvs-keywords.
-ekstrak pola=arahan
Tentukan peraturan pengekstrakan tambahan untuk arkib. Jika nama sumber atau
destinasi sepadan dengan Perl pola, yang arahan dilaksanakan dengan arkib dihidupkan
input standard dan direktori semasa ditetapkan ke lokasi di mana fail mesti berada
diekstrak. Pelbagai -ekstrak pilihan mungkin dibekalkan. Tolak peraturan yang ditentukan pengguna
peraturan terbina dalam.
Peraturan terbina ialah:
.+\.(tar\.gz|tgz) => "gzip -d | tar xpf -"
.+\.(tar\.bz2) => "bzip2 -d | tar xpf -"
.+\.tar => "tar xf -"
.+\.zip => "nyahzip -"
Corak secara tersirat berlabuh pada permulaan dan akhir nama fail.
-[tidak]ident
Jika ditetapkan, nama program dan versi akan dilaporkan.
-[tidak]kata kerja
Ini ditetapkan secara lalai, membuat makepatch memaparkan maklumat mengenai aktivitinya
kepada stderr.
-[tidak]tenang
Bertentangan dengan -berkata-kata. Jika ditetapkan, ini mengarahkan makepatch untuk menyekat paparan
maklumat aktiviti.
-[tidak]membantu
Jika ditetapkan, ini menyebabkan mesej bantuan ringkas dipaparkan, selepas itu program
segera keluar.
Standard Tidak termasuk Corak
Corak fail berikut sentiasa dikecualikan:
*~ *.a *.bak *.BAK *.elc *.exe *.gz *.ln *.o *.obj
*.olb *.lama *.asal *.rej *.jadi *.Z
.del-* .make.state .nse_depinfo teras
tag TAGS
Lebih Baik -kecuali-sccs menambah:
hlm* s.* SCCS
Lebih Baik -exclude-rcs menambah:
,* *,v RCS RCSLOG
Lebih Baik -kecuali-cvs menambah corak ".cvsignore", dan:
.#* #* _$* *$ CVS CVS.adm cvslog.*
Tolong beritahu saya jika saya terlepas beberapa.
alam Sekitar pembolehubah
MAKEPATCHINIT
Apabila pembolehubah persekitaran ini ditetapkan kandungannya dianggap sebagai baris arahan
pilihan yang diproses semasa permulaan. Semua pilihan biasa dibenarkan, ditambah satu:
-rcfile nama fail. Jika -rcfile ditentukan, fail dibaca dan semua barisnya
dianggap mengandungi tetapan pilihan seperti yang diterangkan dalam bahagian "Pilihan Makepatch".
TMPDIR
"TMPDIR" boleh digunakan untuk menetapkan kawasan di mana fail sementara diletakkan. Ia
lalai kepada "/ tmp".
TEMP
"TEMP" boleh digunakan sebagai alternatif kepada "TMPDIR".
Contoh
Katakan anda mempunyai pokok direktori `"pkg-1.6"' yang mengandungi sumber untuk pakej `"pkg"'
versi 1.6 dan pepohon direktori `"pkg-1.7"' yang mengandungi sumber untuk versi 1.7. The
arahan berikut akan menghasilkan kit tampalan yang mengemas kini sumber 1.6 ke dalam 1.7
versi:
makepatch pkg-1.6 pkg-1.7 > pkg-1.6-1.7.patch
Untuk menggunakan skrip ini, pergi ke direktori pkg-1.6 dan suapkan skrip ke applypatch:
cd lama/pkg-1.6
applypatch pkg-1.6-1.7.patch
applypatch akan mengesahkan bahawa ia dilaksanakan di tempat yang betul dan membuat semua perlu
kemas kini.
Ini ialah satu cara untuk menjana dan menggunakan fail manifes:
(cd pkg-1.6; cari . -type f -print > OLDMANIFEST)
(cd pkg-1.7; cari . -type f -print > NEWMANIFEST)
makepatch \
-oldmanifest pkg-1.6/OLDMANIFEST \
-newmanifest pkg-1.7/NEWMANIFEST \
pkg-1.6 pkg-1.7 > pkg-1.6-1.7.diff
bugs and sekatan
Banyak daripada tugas makepatch sedang memproses nama fail. makepatch telah diuji
secara meluas pada sistem Unix, tetapi ia tidak dijamin berfungsi pada sistem lain.
applypatch berulang kali dilaporkan untuk memproses dengan betul makepatch kit tampalan dijana
sistem Windows 32-bit moden juga.
makepatch tidak tahu tentang pautan simbolik. Ini akan dianggap seperti fail biasa.
Keputusan yang salah boleh dijana jika senarai fail yang digunakan atau dijana menggunakan berbeza
pemisah laluan.
Gunakan makepatchp dalam talian menggunakan perkhidmatan onworks.net