एचजी शाखाओं को बंद करना


103

hg branch FeatureBranchNameडेवलपर्स के बीच साझा किए गए एक केंद्रीय रेपो में इसका उपयोग और प्रकाशित करते समय, क्या अंततः FeatureBranchNameविकास को आधिकारिक तौर पर डिफ़ॉल्ट शाखा के साथ विलय कर दिया गया है?

यह तब भी मददगार होगा FeatureBranchNameजब hg branchesकमांड करते समय दिखाई न दे ।

जवाबों:


158
hg commit --close-branch

एक शाखा को बंद करने के लिए पर्याप्त होना चाहिए। (देखें hg commit)

--close-branch

शाखा को बंद के रूप में चिह्नित करें, इसे शाखा सूची से छिपाएं।

इस धागे को भी देखें :

मेरी अपेक्षा यह है कि मैं एक शाखा को बंद कर दूं क्योंकि विकास की यह रेखा समाप्त हो चुकी है, और मैं किसी और से परेशान नहीं होना चाहता।
इसलिए, जब एक शाखा को बंद कर दिया गया है, तो मुझे इसे नहीं देखना चाहिए (शाखाओं में, सिर, लॉग, उदाहरण के लिए) जब तक मैं स्पष्ट रूप से बंद शाखाओं को देखने के लिए नहीं कहता।

मुझे ध्यान देना चाहिए कि मुझे उम्मीद है कि एक बंद शाखा भंडार में बनी रहेगी; यह भविष्य में उपयोगी हो सकता है, और commit --close-branchसंदेश को कम से कम यह स्पष्ट करना चाहिए कि शाखा क्यों बंद की गई थी।
शाखाओं को तोड़ना पूरी तरह से एक और बात है।


ध्यान दें: "क्लोजिंग ब्रांच" व्यवसाय एक पहलू है जिसे गिट में गायब होने के रूप में देखा जाता है, जब मर्क्यूरियल की तुलना में :

Git में शाखाएँ हैं, हमें हमेशा बताया जाता है, उपयोग की जाने वाली पुरानी चीजें और फेंक दी जाती हैं, और जहाँ तक मुझे पता है कि git के पास आपके सहकर्मियों को यह संकेत करने का कोई तरीका नहीं है कि आप एक शाखा के साथ काम कर रहे हैं;
ऐसा करने का एकमात्र तरीका इसे हटाना है, या आशा है कि वे अंतिम मर्ज कमिटमेंट को देखते हैं और समझते हैं कि शाखा आगे के विकास के लिए बंद है।

[मर्क्यूरियल में] जब आप एक शाखा के साथ काम करते हैं, हालाँकि, आप इसे भंडार से हटा नहीं सकते हैं; इसके बजाय, आप एक कमिट जारी करते हैं जो शाखा को बंद कर देता है, और मर्क्यूरियल नोट करता है कि शाखा बंद है। यह आपके भंडार इतिहास का एक स्थायी हिस्सा रहेगा।


3
क्या गैर-वर्तमान शाखा को बंद करने का कोई तरीका है?
थॉमस एस।

@ThomasS। 5 साल बाद, मुझे यकीन नहीं है। डॉक्टर को हाल ही में अद्यतन किया गया है: mercurial.808500.n3.nabble.com/…
VonC

1
@ThomasS। हां, इस जवाब से मुझे उस समस्या में मदद मिली। hg debugsetparent <revision> hg branch <branchOfRevision> ध्यान दें कि आदेश महत्वपूर्ण है। यह आपके रेपो को लगता है कि यह नए संशोधन पर है, जबकि आपकी सभी फाइलें प्रारंभिक एक से हैं। उसके बाद, आप --close- शाखा प्रतिबद्ध का उपयोग कर सकते हैं, लेकिन खाली प्रतिबद्ध बनाने के लिए -X * विकल्प का उपयोग करें। hg commit --close-branch -X * -m "Closing branch."
Maske

8

मैंने एक साधारण स्क्रिप्ट लिखी जो शाखा के करीब पहुंचती है , PruningDeadBranches पर मिलने वाली कमांड

## स्क्रिप्ट ##

#!/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" 

कैसे

रिपॉजिटरी की स्थानीय कॉपी पर जाएं, और एक तर्क देकर इस स्क्रिप्ट को चलाएं। उदाहरण के लिए:

$./the_script_above.sh bad_branch_name_to_close

यह क्या करता है

यह निम्न कार्य करता है:

  1. यदि शाखा मौजूद है, तो यह दी गई शाखा में अपडेट होती है या फिर एक त्रुटि संदेश के साथ मौजूद है।
  2. यह शाखा को बंद कर देता है।
  3. डिफ़ॉल्ट शाखा में अद्यतन।
  4. बंद हो जाता है।

स्क्रिप्ट नाम में रिक्त स्थान वाली शाखाओं को संभालती नहीं है।
जारेड

@Jared आप अपनी शाखा के साथ एक स्वतंत्र कमांड चला सकते हैं। के लिए उदाहरण के लिए: $ hg update yourbranchnamecontainingspace। मुझे लगता है कि हम अंतरिक्ष के साथ एक शाखा का निर्माण कर सकते हैं, हालांकि जब आप अद्यतन जैसी व्यापारिक कमांड चलाते हैं, तो आपको एक पार्स त्रुटि मिलती है । आप स्क्रिप्ट के पैरामीटर के रूप में शाखा का नाम पारित करते समय अंतरिक्ष चरित्र से बचने पर विचार करना चाह सकते हैं। चीयर्स।
रोशन पौडीलाल

echo "$1 is up"यहाँ डुप्लिकेट नहीं है? में thenऔर बाद में fi? इसके अलावा, इस तरह की स्क्रिप्ट मददगार हो सकती है यदि एक बार में डिफ़ॉल्ट रूप से विलय करने के विकल्प का समर्थन करता है
याकॉव

1
@YakovL हाँ =)। अधिसूचना के लिए धन्यवाद। मैंने स्क्रिप्ट को अपडेट किया। बेशक यह वैकल्पिक मर्ज के लिए मददगार होगा, मैं भविष्य में अपडेट करने की कोशिश करूंगा लेकिन तब तक आप स्क्रिप्ट को अपने स्वाद के पैमाने पर रख सकते हैं =)
रोशन पौडीलाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.