Ini ialah arahan git-merge-changelog 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
git-merge-changelog - pemacu git merge untuk fail GNU ChangeLog
DESCRIPTION
Pemacu gabungan lalai 'git' sentiasa menghasilkan konflik apabila menarik orang ramai
pengubahsuaian ke dalam fail ChangeLog yang diubah suai secara peribadi. Ini kerana fail ChangeLog
sentiasa diubah suai di bahagian atas; pemacu gabungan lalai tidak mempunyai petunjuk bagaimana untuk menangani
ini. Tambahan pula konflik dibentangkan dengan lebih <<<< ==== >>>> penanda daripada
perlu; ini kerana pemacu gabungan lalai membuat usaha sia-sia untuk melihat
perubahan baris individu dalam entri ChangeLog.
Program ini berfungsi sebagai pemacu gabungan 'git' yang mengelakkan masalah ini.
1. Ia tidak menghasilkan konflik apabila entri ChangeLog telah dimasukkan di bahagian atas kedua-duanya
awam dan dalam pengubahsuaian peribadi. Ia meletakkan entri yang ditambah secara peribadi di atas
entri yang ditambah secara terbuka.
2. Ia menghormati struktur fail ChangeLog: entri tidak dibahagikan kepada baris tetapi
disimpan bersama.
3. Ia juga mengendalikan kes pengubahsuaian kecil entri ChangeLog yang lalu, atau daripada
entri ChangeLog dialih keluar: ia digabungkan seperti yang dijangkakan.
4. Konflik dibentangkan di bahagian atas fail, bukannya di tempat ia berlaku, jadi
bahawa pengguna akan melihatnya serta-merta. (Tidak seperti untuk kod sumber yang ditulis dalam beberapa
bahasa pengaturcaraan, penanda konflik yang terletak beberapa ratus baris dari
bahagian atas tidak akan menyebabkan sebarang ralat sintaks dan oleh itu berkemungkinan kekal
tanpa disedari.)
Untuk pergi pengguna:
- Tambahkan pada .git/config untuk pembayaran (atau pada $HOME/.gitconfig anda) baris
[gabungkan "merge-changelog"]
nama = pemacu gabungan ChangeLog gaya GNU
pemacu = /usr/bin/git-merge-changelog %O %A %B
- Dalam setiap direktori yang mengandungi fail ChangeLog, tambahkan fail '.gitattributes' dengan
baris ini:
ChangeLog merge=merge-changelog
(Lihat "man 5 gitattributes" untuk maklumat lanjut.)
Untuk bzr pengguna:
- Pasang pemalam bzr 'extmerge' yang disenaraikan di
<http://doc.bazaar.canonical.com/plugins/en/index.html>
<http://wiki.bazaar.canonical.com/BzrPlugins>
- Tambahkan pada baris $HOME/.bazaar/bazaar.conf anda
external_merge = git-merge-changelog %b %T %o
- Kemudian, untuk menggabungkan konflik dalam fail ChangeLog, gunakan
$ bzr extmerge ChangeLog
Untuk hg pengguna:
- Tambahkan baris pada $HOME/.hgrc anda
[corak gabungan]
ChangeLog = git-merge-changelog
[alat gabungan]
git-merge-changelog.executable = /usr/bin/git-merge-changelog
git-merge-changelog.args = $base $local $other
Lihathttp://www.selenic.com/mercurial/hgrc.5.html> bahagian merge-tools untuk rujukan.
Penggunaan as an alternatif kepada 'diff3':
git-merge-changelog melakukan peranan yang sama seperti "diff3 -m", hanya dengan argumen yang disusun semula:
$ git-merge-changelog %O %A %B
setanding dengan
$ diff3 -m %A %O %B
Memanggil konvensyen:
Pemacu gabungan dipanggil dengan tiga argumen nama fail:
1. %O = Moyang sepunya %A dan %B.
2. %A = Kandungan fail daripada "cawangan semasa".
3. %B = Kandungan fail daripada "cawangan lain"; ini adalah kandungan yang digabungkan
masuk
Sekiranya berlaku "git stash apply" atau tarikan huluan (cth daripada penyelenggara subsistem kepada
penyelenggara pusat) atau tarikan hiliran dengan --rebase:
2. %A = Kandungan terbaharu fail yang ditarik; diubahsuai oleh pelaksana lain.
3. %B = Salinan fail terbaru pengguna; diubahsuai oleh pengguna.
Dalam kes tarikan hiliran (cth. dari repositori pusat kepada pengguna) atau a
tarik hulu dengan --rebase:
2. %A = Salinan fail terbaru pengguna; diubahsuai oleh pengguna.
3. %B = Kandungan terbaharu fail yang ditarik; diubahsuai oleh pelaksana lain.
Ia harus menulis output gabungannya ke dalam fail %A. Ia juga boleh mengulangi beberapa teguran kepada stdout.
Ia harus keluar dengan kod pulangan 0 jika gabungan boleh diselesaikan dengan bersih, atau dengan bukan sifar
kembalikan kod jika terdapat konflik.
Cara it berfungsi:
Struktur fail ChangeLog: Ia terdiri daripada entri ChangeLog. Entri ChangeLog
bermula pada baris mengikut baris kosong dan itu bermula dengan aksara bukan ruang putih,
atau pada permulaan fail. Pemacu gabungan berfungsi seperti berikut: Ia membaca tiga
fail ke dalam ingatan dan membedahnya ke dalam entri ChangeLog. Ia kemudian mencari perbezaan
antara %O dan %B. Mereka dikelaskan sebagai:
- penyingkiran (beberapa entri berturut-turut dialih keluar),
- perubahan (beberapa entri berturut-turut dialih keluar, beberapa entri berturut-turut ditambah),
- tambahan (beberapa entri berturut-turut ditambah).
Pemandu kemudian cuba menggunakan perubahan pada %A. Untuk kesan ini, ia terlebih dahulu mengira a
surat-menyurat antara entri dalam %O dan entri dalam %A, menggunakan rentetan kabur
memadankan untuk masih mengenal pasti entri yang diubah.
- Penyingkiran digunakan satu demi satu. Jika entri hadir dalam %A, di mana-mana kedudukan, ia adalah
dikeluarkan. Jika tidak, pengalihan keluar ditandakan sebagai konflik.
- Penambahan di bahagian atas %B digunakan di bahagian atas %A.
- Penambahan antara entri x dan entri y (y mungkin hujung fail) dalam %B digunakan
antara entri x dan entri y dalam %A (jika ia masih wujud dan masih berturut-turut dalam
%A), jika tidak, penambahan ditandakan sebagai konflik.
- Perubahan dikategorikan kepada "perubahan mudah":
entry1 ... entryn dipetakan ke
tambah_entry ... tambah_entry modified_entry1 ... modified_entryn, di mana
surat-menyurat antara entry_i dan modified_entry_i masih jelas; dan "perubahan besar":
ini semua yang lain. Perubahan mudah di bahagian atas %B digunakan dengan meletakkan
menambahkan entri di bahagian atas %A. Perubahan dalam perubahan mudah digunakan satu demi satu;
mungkin membawa kepada konflik kemasukan tunggal. Perubahan besar digunakan secara en bloc, mungkin
membawa kepada konflik yang merangkumi pelbagai entri.
- Konflik dikeluarkan di bahagian atas fail dan menyebabkan status keluar 1.
Gunakan git-merge-changelog dalam talian menggunakan perkhidmatan onworks.net