Terjemahan: Indonesian - Italiano - English
Contents
Pemaketan menggunakan Git
Catatan, ini hanyalah panduan pengantar yang sangat umum. Dokumentasi resmi yang lebih lengkap tersedia dalam paket git-buildpackage (lihat dokumentasi online).
Untuk membantu konversi dari repositori Subversion ke git yang dibuat oleh svn-buildpackage, lihat sub halaman dari mengkonversi svn-buildpackage.
Kemudian Anda juga harus membaca informasi tentang dukungan pristine-tar.
Halaman ini menjelaskan alur kerja menggunakan perintah dari paket git-buildpackage. Alternatif lainnya adalah git-dpm.
Metode mengimpor paket Upstream
Ada dua cara yang utama untuk mengimpor kode upstream ke repositori debian:
Anda dapat mengimpor arsip tar dari rilis upstream kedalam repositori khusus untuk Debian. Ini akan menciptakan komit untuk setiap rilis. Hal ini umumnya dapat dilakukan dengan perintah gbp import-orig. Ini adalah metode yang paling umum, karena ia mengasumsikan HANYA upstream ini yang merilis arsip tar.
Jika pengembang upstream menggunakan git untuk mengelola paket sumbernya, repositori debian dapat berada pada cabang dari kerangka utama upstream. Jelas ini hanya bekerja dengan beberapa berkas upstream, tapi keuntungan besar dari ini adalah hubungan antara debian dan kode upstream akan SANGAT bersih. Menerapkan patch dan rilis terjadi lebih alami. Karena repositori APT Debian masih menggunakan arsip tar, Anda tetap perlu mengelolanya dengan pengaturan ini, namun justru pristine-tar ada untuk tujuan ini.
Ada juga pilihan ketiga, yang merupakan gabungan dari dua metode sebelumnya: gbp import-orig --upstream-vcs-tag. Hal ini akan berguna ketika arsip tar tidak sesuai dengan rilis upstream, yang dapat terjadi misalnya jika:
- arsip tar dikemas ulang (untuk menghapus potongan non-DFSG, misalnya)
skrip upstream di gunakan arsip tar untuk membuat perubahan (autotools make dist menggunakan ini pada beberapa proyek)
Berbagai pro dan kontra dibahas di halaman berikut:
Langkah awal
Mengimpor upstream sebagai arsip tar
Ini akan memudahkan dalam membuat versi awal dari sebuah paket, diluar Git. Setelah ini selesai dilakukan, anda harus mengimpor paket dengan menggunakan perintah import-dsc dari perkakas gbp. Sebelumnya ini sebagai git-import-dsc. Direktori dimana ia dipanggil akan menjadi direktori induk dari repositori baru Git.
$ gbp import-dsc /path/to/package_0.1-1.dsc
Ini akan menghasilkan keluaran dari proses dan membuat beberapa komit awal. Kemudian, anda akan memiliki beberapa berkas dan direktori baru:
$ ls package/ package_0.1-1.orig.tar.gz
Pada repositori baru terlihat git-buildpackage telah selesai melakukan:
Mengimpor berkas paket (tapi tidak dengan direktori debian/) kedalam cabang upstream
Telah diberi label sebagai upstream/0.1 dimana 0.1 adalah nomor versi paket
Mengimpor direktori debian/ kedalam cabang master berikut dengan berkas-berkas upstream
Menandai komit terakhir sebagai debian/0.1-1 yang mengasumsikan bawah paket tersebut telah selesai.
Menggunakan repositori upstream
Jika upstream telah menggunakan git, cukup dengan menbuat cabang baru untuk debian. Konversi hanya untuk nama cabang dan label seperti pada kasus yang telah dijelaskan sebelumnya, sehingga anda dapat membuat cabang master dari rilis upstream , and dan menambahkan direktori debian/ sebagai sebuah komit.
Alur kerja pemaketan berikutnya
Sekarang Anda dapat bekerja pada cabang master untuk memodifikasi paket. Komit dengan:
$ git commit -a
dan bangun paket dengan:
$ gbp buildpackage
Setelah menghasilkan sebuah paket yang siap-rilis, anda harus memberi label dengan cara berikut:
$ gbp buildpackage --git-tag
Pastikan berkas debian/changelog anda telah benar, karena itu akan digunakan untuk membuat label. label akan diberi nama debian/0.1-2 dimana 0.1-2 adalah versi Debian.
Menangani patch debian
Perkakas gbp-pq dapat digunakan untuk melacak patch di git, dan untuk ekspor/impor ke/dari seri quilt di debian/patches.
Memutakhirkan ke versi upstream terbaru
Mengimpor upstream sebagai arsip tar
Ketika versi baru upstream telah ada, gunakan perintah import-orig untuk menambahkannya ke repositori. Sebelumnya ini adalah git-import-orig.
Menggunakan sebuah berkas debian/watch (direkomendasikan)
$ gbp import-orig --uscan
Menggunakan sebuah berkas arsip tar
$ gbp import-orig /path/to/new-upstream.tar.gz -u 0.2
dimana 0.2 adalah nomor versi dari paket upstream terbaru.
Jika arsip tar upstream sudah dalam bentuk namapaket_versi.orig.tar.gz (Mis. paket_0.2.orig.tar.gz), maka opsi -u tidak diperlukan.
Menggunakan repositori upstream
Jika kita menggunakan repositori upstream, kita dapat mengambil label dari rilis baru dalam repositori dengan perintah git fetch, di cabang upstream. Kita perlu menggabungkan cabang ini ke cabang master dengan perintah git merge, dan komit arsip tar baru dengan pristine-tar. Anda dapat melakukan patch rebased dengan gbp-pq, dan menggunakan git itu sendiri untuk menyelesaikan setiap konflik yang telah dibuat.
Menggabungkan sebuah cabang debian-experimental kedalam cabang master untuk sid
Kita asumsikan anda telah memiliki beberapa cabang sebagai berikut:
upstream |
versi upstream terbaru dalam pengembangan |
upstream-1.5 |
seri upstream 1.5, dianggap stable |
master |
cabang untuk membuat paket sid |
debian-experimental |
cabang untuk membuat paket experimental |
- Anda impor setiap rilis ke upstream-1.5 dan gabungkan ke cabang master
- Anda gabungkan setiap rilis beta (1.6~beta) ke cabang upstream dan gabungkan ke cabang debian-experimental
Pada poin tertentu, anda ingin berpindah kerja dari cabang debian-experimental ke cabang master dan merilisnya ke unstable.
Pertama, anda harus memastikan bahwa tidak ada kesalahan apapun pada debian/* di debian-experimental - mungkin anda melakukan suatu komit pada master dan tidak memilahnya ke dalam debian-experimental. Anda dapat membandingkan debian/ subtree seperti ini:
git checkout master git diff debian-experimental debian
Jika perlu, pilah setiap perubahan ke debian-experimental. Pada penggabungan berikutnya dapat menghilangkan segalanya pada master dan menimpanya dengan isi yang ada pada cabang debian-experimental. Satu-satunya yang tersisa adalah debian/changelog karena ini harus mencatat semua perubahan dengan sid dan tidak memerlukan detil rincian dari rilis individu untuk experimental. Berikut ini bagaimana cara melakukannya (pastikan ruang kerja master telah bersih):
git checkout master git clean -fd && git checkout . git merge -s ours debian-experimental git diff --binary debian-experimental | git apply -R --index git reset debian/changelog git checkout debian/changelog git commit -m 'Merge 1.6.0~rc1 from debian-experimental' --amend
Setelah melakukan ini, sangat disarankan agar anda memeriksa penggabungan dengan gitk dan git diff sebelum anda kirim ke alioth atau pengembang lainnya. Sebagai contoh,
git diff debian-experimental
harus dilakukan pada cabang master hanya menampilkan changelog, karena segala sesuatu yang ada pada master saat ini harus identik dengan debian-experimental.
Kesimpulan
Itu semua adalah hal-hal dasar yang harus Anda ketahui dalam membangun paket dengan Git! Disarankan, untuk membuat salinan dari paket dan mencoba semua perkakas pada repositori sementara, sebagai permulaan. Setelah Anda merasa telah menguasainya, ada pilihan lain yang perlu untuk dilihat.
Opsi lainnya
pbuilder
Untuk menggunakan pbuilder, anda cukup merubah builder pada ~/.gbp.conf atau /etc/git-buildpackage/gbp.conf ke /usr/bin/git-pbuilder
/usr/bin/git-pbuilder dapat disunting untuk menggunakan opsi tambahan, seperti --builddir dan --debsign-k...
Menandatangani label
Bila menggunakan git-import-dsc atau perkakas git-import-orig, pilihan berikut dapat digunakan
--sign-tags
- Untuk menandatangani label
--keyid=gpg-keyid
- Dengan kunci gpg untuk menandatangani label
pristine-tar
git-buildpackage juga memungkinkan anda untuk menggunakan pristine-tar, sebuah perkakas baru yang dikembangkan oleh Joey Hess untuk membuat kembali arsip tar yang identik dari setiap rinci berkas delta dan berkas-berkas dalam direktori saat ini.
Jika anda mengaktifkan pristine-tar, dan menjalankan git-import-dsc atau git-import-orig, berkas delta akan melakukan komit pada cabang pristine-tar. Ketika anda membangun paket dengan gbp buildpackage, arsip tar yang tepat akan dibuat ulang menggunakan pristine-tar.
Ketika anda menggunakan perkakas git-import-dsc atau git-import-orig, opsi --pristine-tar dapat digunakan. Ketika menjalankan gbp buildpackage, opsi --git-pristine-tar dapat digunakan. Anda juga dapat mengaktifkan opsi pristine-tar pada /etc/git-buildpackage/gbp.conf.
menjalankan lintian setelah membangun paket
Menambahkan ini ke ~/.gbp.conf :
postbuild = lintian -I $GBP_CHANGES_FILE && echo "Lintian OK"
menjalankan autopkgtest setelah membangun paket
Pertama, anda mengatur lingkungan untuk adt (lihat dokumentasi autopkgtest, man adt-run) Kemudian tambahkan ini ke ~/.gbp.conf anda:
postbuild = adt-run --changes $GBP_CHANGES_FILE --- schroot sid-amd64-sbuild; [ $? -eq 0 -o $? -eq 8 ]
Pemeriksaan terakhir berfungsi untuk menghindari kegagalan ketika tidak ada percobaan yang berjalan.
Contoh gbp.conf
[DEFAULT] builder = git-pbuilder cleaner = fakeroot debian/rules clean # Create pristine-tar on import pristine-tar = True # Run lintian to check package after build postbuild = lintian -iIE --pedantic $GBP_CHANGES_FILE && echo "Lintian OK""" [buildpackage] export-dir = ../build-area/ [import-orig] # Filter out unwanted files/dirs from upstream filter = [ '*egg.info', '.bzr', '.hg', '.hgtags', '.svn', 'CVS', '*/debian/*', 'debian/*' ] # filter the files out of the tarball passed to pristine-tar filter-pristine-tar = True [git-import-dsc] filter = [ 'CVS', '.cvsignore', '.hg', '.hgignore', '.bzr', '.bzrignore', '.gitignore' ] [git-dch] # ignore merge commit messages git-log = --no-merges
Lihat juga
?Menggunakan Git di Alioth
- /usr/share/doc/git-buildpackage
cowbuilder dan git-pbuilder dapat juga digunakan
Pranala Luar
Halaman web Git
Menggunakan Git untuk Pemaketan Debian oleh Russ Allbery
diskusi tentang bagai mana menyertakan upstream git pada paket git
Co-maintaining sebuah paket Debian dengan git, git-buildpackage dan pbuilder oleh Philipp Huebner