2010-12-08 14 views
5

TortoiseHg 1.1 kullanıyorum ve ekibimizde, üzerinde çalıştığımız her durum için adlandırılmış dallar oluşturmaya ve sonra işimiz bittiğinde varsayılanla birleştirmeye eğilimliyiz. Ne yazık ki, adlandırılan şubelerin çoğu kapanmıyor. Bu çok büyük bir sorun değil, şu an üzerinde çalıştığınız daldan süzüp süzdüğünüzde sinir bozucu ve arama yapmak için eski dalların büyük bir listesi var.TortoiseHg'de birden çok şube kapatın

TortoiseHg'de ya da komut satırından, her bir dalı elle işlemek ve kapatmak zorunda kalmadan birden çok şubeyi hızlı bir şekilde kapatmak için kolay bir yol var mı?

hangi kapanış şube seçeneği kullanılabilir:

+2

sen, muhtemelen kötü adlı dalları kullandığınız göz kafa karıştırıcı veya güç olacak kadar adlandırılmış dalları varsa. Bir DVCS'nin arkasındaki fikirlerden biri, sadece klonlama yoluyla istediğiniz zaman anonim şubeler yapabilmenizdir. Bu, bağımsız olarak çalışabiliyorsunuz ve ardından özellik tamamlandıktan sonra zinciri geri itiyorlar. . – dimo414

cevap

7

Maalesef hayır.

O dalda ayrı ayrı kendi ile her şube kapatmak işlemek gerekir.

for %%f in (branch1 branch2 branch4) do (
    hg up "%%f" 
    if exitcode 1 goto quit 
    hg commit --close-branch -m "closing branch %%f" 
    if exitcode 1 goto quit 
) 
:quit 

kullandığım iş akışı için imleri uzantısını kullanmaktır:

Bunu yapmanın en iyi yolu, komut satırı kullanmaktır, hatta onlardan bir demet kapatmak için basit bir toplu iş dosyası oluşturabilir Gelişim hatlarım için sadece yerel yer imlerini sakladım, bu şekilde normal isimleri kullanılmayan Mercurial şubeleri kullanıyorum, fakat yine de bunları yerel olarak kolayca ayırt edebiliyorum. İleti mesajları daha sonra ayırmak için kullanılır.

Bu şekilde, geçmişimi dağınık bir dizi dallarım yok, onları kapatmayı hatırlamak zorunda değilim ve yalnızca yerel olarak kullandığım dalları takip etmeliyim.

+0

+1 Şubeyi otomatik olarak kapatan son bölümü kaçırdı.Her zaman dalın sadece uzun ömürlü olacak kalkınma hatları için kullanıldığını düşünüyorum. – pyfunc

2

tüm olası seçenekleri için aşağıya bakın.

hg up -C badbranch 
hg commit --close-branch -m 'close badbranch, this approach never worked' 
hg up -C default # switch back to "good" branch 

Ayrıca benim anlayış çoğu iş için klonlamak ve sadece gelişmenin birkaç olası uzun ömürlü trenler için adlandırılmış dalları kullanılması tercih edilir olduğunu olmuştur.

+0

Evet, normal günlük hata düzeltme için değil, kendi işim için yerel yer işaretlerini ve yalnızca daha büyük özellikler için adlandırılmış dalları kullanırdım. –

1

Varsayılan değerler dışındaki tüm etkin dalları kapatacak bir powershell betiğidir. Kapatmak istemediğiniz dalları hariç tutmak için kendi filtreleme mantığınızı ekleyin.

+0

Bu isimde boşluk olan şubeleri kapatamaz mıydı? Bunu bashta yapmaya çalışıyorum ve hg dallarının çıktısına takılıyorum. Her öğe aslında biçimindedir. Hg belgeleri deneysel --template komut satırı argümanı hakkında bir şeyler söylüyor, ama mercurial versiyonum bunu desteklemiyor gibi görünüyor ... – CodeOtaku

0

Pekala bu çok geç oldu, ama bunu bash yoluyla yapmaya karar verdim ve çok fazla acıdan sonra bir çalışma çözümüm var. Sonunda bu bir hg itme yapmadığına dikkat et, çünkü iterek önce kaplumbağadaki sonuçlara bakmak istedim.

#Protected branches to not close 
develop='develop' 
default='default' 

IFS=$'\n' 

#Get all branches 
allBranches=$(hg branches | sort) 

#Loop over and close old branches 
for item in $allBranches 
do 

#Trim off everything but the branch name 
branch=$(echo $item | sed -r 's/\s*[0-9]+:[0-9a-f]+(\s\(inactive\))?$//') 

if [ $branch != $develop ] && [ $branch != $default ] 
then 

hg update $branch 
hg commit --close-branch -m "Closing old branch" 

fi 

done 

komut dosyasını çalıştırmadan sonra aktif çalışıyorlardı dalları ekibi istedi ve bu kapatma taahhüt elimden.