Terjemahan: Indonesian - Italiano - English


Pemaketan menggunakan Git

{i} 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:

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:

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:

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.

{i} 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

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

{i} /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

Pranala Luar