Menutup Cabang Hg

103

Saat menggunakan hg branch FeatureBranchNamedan menerbitkannya ke repo pusat yang dibagikan di antara pengembang, apakah ada cara untuk menutup FeatureBranchNamekapan pengembangannya secara resmi telah digabungkan dengan cabang default?

Ini juga akan membantu jika FeatureBranchNametidak terlihat saat melakukan hg branchesperintah.

Nate
sumber

Jawaban:

158
hg commit --close-branch

seharusnya cukup untuk menandai penutupan cabang. (lihat hg commit)

--close-branch

tandai cabang sebagai ditutup, sembunyikan dari daftar cabang.

Lihat juga utas ini :

Harapan saya adalah saya menutup cabang karena jalur pengembangan ini telah menemui jalan buntu, dan saya tidak ingin diganggu lagi.
Oleh karena itu, ketika cabang telah ditutup, saya tidak akan melihatnya (di cabang, kepala, log, misalnya) kecuali saya secara eksplisit meminta untuk melihat cabang yang ditutup.

Saya harus mencatat bahwa saya mengharapkan cabang tertutup tetap berada di repositori; mungkin berguna di masa depan, dan commit --close-branchpesan tersebut setidaknya harus menjelaskan mengapa cabang ditutup.
Memangkas cabang adalah hal lain.


Catatan: bahwa bisnis "cabang penutupan" adalah salah satu aspek yang dianggap hilang di Git, jika dibandingkan dengan Mercurial :

Cabang di git adalah, kami selalu diberi tahu, hal-hal singkat untuk digunakan dan dibuang, dan sejauh yang saya tahu git tidak memiliki cara untuk menunjukkan kepada kolega Anda bahwa Anda telah selesai dengan sebuah cabang;
satu-satunya cara untuk melakukannya adalah dengan menghapusnya, atau berharap mereka melihat komit gabungan terakhir dan memahami bahwa cabang ditutup untuk pengembangan lebih lanjut.

[In Mercurial] Ketika Anda selesai dengan sebuah cabang, bagaimanapun, Anda tidak dapat menghapusnya dari repositori; sebagai gantinya, Anda mengeluarkan komit yang menutup cabang, dan Mercurial mencatat bahwa cabang ditutup. Ini akan tetap menjadi bagian permanen dari riwayat repositori Anda.

VonC
sumber
3
Apakah ada cara untuk menutup cabang yang tidak berjalan?
Thomas S.
@Tokopedia 5 tahun kemudian, saya tidak tahu pasti. Dokumen ini baru saja diperbarui: mercurial.808500.n3.nabble.com/…
VonC
1
@Tokopedia ya, jawaban ini membantu saya mengatasi masalah itu. hg debugsetparent <revision> hg branch <branchOfRevision> Perhatikan bahwa urutan itu penting. Ini akan membuat repo Anda berpikir itu ada di revisi baru, sementara semua file Anda dari yang awal. Setelah itu, Anda dapat menggunakan --close-branch commit, tetapi gunakan opsi -X * untuk membuat commit kosong. hg commit --close-branch -X * -m "Closing branch."
Maske
8

Saya menulis skrip sederhana yang melengkapi penutupan cabang, perintah yang ditemukan di PruningDeadBranches .

## Skrip ##

#!/bin/bash
#script to close the not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
# if we are here then the branch is up, so we do the following
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 

Bagaimana caranya

Pindah ke salinan lokal repositori, dan jalankan skrip ini dengan memberikan argumen. Sebagai contoh:

$./the_script_above.sh bad_branch_name_to_close

Apa fungsinya

Ini melakukan hal berikut:

  1. Jika cabang ada, itu memperbarui ke cabang yang diberikan atau ada dengan pesan kesalahan.
  2. Itu menutup cabang.
  3. Pembaruan ke cabang default.
  4. Berhenti.
Roshan Poudyal
sumber
Skrip tidak menangani cabang dengan spasi pada namanya.
Jared
@Jared dapatkah Anda menjalankan perintah up independen dengan cabang Anda. Untuk misalnya: $ hg update yourbranchnamecontainingspace. Saya pikir kita bisa membuat nama cabang dengan spasi, namun Anda mendapatkan kesalahan parse saat Anda menjalankan perintah lincah seperti update . Anda mungkin ingin mempertimbangkan untuk keluar dari karakter spasi sambil meneruskan nama cabang sebagai parameter ke skrip. Bersulang.
Roshan Poudyal
tidak echo "$1 is up"digandakan di sini? Dalam thendan setelahnya fi? Selain itu, skrip semacam itu dapat membantu jika mendukung opsi untuk bergabung menjadi default sekaligus
YakovL
1
@YakovL ya =). Terima kasih atas pemberitahuannya. Saya memperbarui skrip. Tentu akan sangat membantu untuk penggabungan opsional, saya akan mencoba memperbarui di masa mendatang tetapi sampai saat itu Anda dapat menskalakan skrip sesuai selera Anda =)
Roshan Poudyal