2010-09-13 6 views
6

मेरे पास एक बहुत गन्दा टीएफएस संरचना है जिसे मैं साफ करने की कोशिश कर रहा हूं (मेरे पूर्ववर्ती के लिए धन्यवाद)। अब मेरे पास एक ऐसी स्थिति है जहां मुझे एक शाखा से दूसरी शाखा में परिवर्तनों को चुनिंदा रूप से लाने की ज़रूरत है, जहां उनके माता-पिता/बच्चे के रिश्ते नहीं हैं और मैं नहीं चाहता कि वे परिवर्तन उनके साझा ट्रंक से गुजरें। मैं यह कैसे कर सकता हूँ?टीएफएस में, मैं एक असंबंधित शाखा में परिवर्तन कैसे कर सकता हूं?

मैंने आधारहीन विलय की कोशिश की है - In TFS, how do I do a baseless merge on specific changesets? - जिसने मुझे बताया कि विलय करने में कोई बदलाव नहीं आया है।

जो मैं प्राप्त करना चाहता हूं वह इस बदलाव के अलावा TFS : Can a shelveset be restored to another location? जैसा कुछ है।

जीआईटी में मुझे लगता है कि यह एक आसान चेरी-पिक होगा।

मेरे संरचना तरह दिखता है:

Y-C1-C2-C3 
/
X------------- 
    \ 
    Z 

और सवाल यह है कि मैं एक्स के माध्यम से गुजर बिना जेड में वाई से सी 2 मिलता है है?

+0

आपके आधारहीन विलय प्रयास में आपने किन विकल्पों का उपयोग किया था? क्या आपने/फोर्स विकल्प का उपयोग किया था? –

+0

हां मैंने बल और कुछ अन्य चीजों की कोशिश की जो मैंने जगह के आसपास पढ़ी लेकिन एक ही परिणाम के साथ - इसमें कोई बदलाव नहीं आया। अंत में मैंने गोली मार दी और इसे मैन्युअल रूप से विलय कर दिया ... इसमें 14 घंटे लग गए लेकिन कम से कम मैं परिणाम में 100% आत्मविश्वास रखता हूं। – idieeasy

उत्तर

3

हमारे पास एक समान स्थिति है, हालांकि, हमारे मामले में, हम कई शाखाओं से एक "स्क्रैच" निर्माण शाखा में आधारहीन विलय करते हैं। एकमात्र तरीका यह है कि हम ऐसा करने में सक्षम थे, टीएफएस एपीआई का लाभ उठाने वाली अपनी उपयोगिता लिखकर।

अच्छी खबर यह है कि, आप कोड की कुछ सौ पंक्तियों से कम में इसे पूरा करने में सक्षम होना चाहिए।

बुनियादी कदम हैं:

  • कनेक्ट TFS
  • को
  • VersionControlServer का एक उदाहरण (इसे कॉल VCS)
  • एक कार्यस्थान बनाएँ
  • के माध्यम से एक VCS.GetChangeset()
  • दोहराएं करते जाओ Changes
  • बदल चुके आइटमों की एक सूची प्राप्त करने के लिएकरें आपकी स्रोत शाखा से प्रत्येक गंतव्य आइटम में आपकी गंतव्य शाखा में।
  • गंतव्य शाखा में आइटमों की जांच करें।
  • हटाएं कार्यक्षेत्र
+0

ऐसा लगता है कि यह मैन्युअल रूप से करने से अलग होने का एकमात्र तरीका है (जो मैंने अपनी टीम को पकड़ने के बजाय किया था)। यह एक साधारण/आम समस्या होनी चाहिए? – idieeasy

+0

सर्वोत्तम प्रथाओं का कहना है कि आपको चेरी-पिक नहीं करना चाहिए। यदि आप ऐसा कर रहे हैं, तो आपकी शाखा रणनीति के साथ कोई समस्या है। आप इसके बजाय सुविधा पर ब्रांचिंग पर विचार करना चाह सकते हैं। हमारी स्थिति में हम इसे परीक्षण के लिए करते हैं। – Robaticus

+0

आप बिल्कुल सही हैं, ब्रांचिंग रणनीति में कोई समस्या थी और यह सवाल उठ गया क्योंकि मैं शाखाओं को पुनर्व्यवस्थित करने का प्रयास कर रहा था ताकि मुझे विलय में इतनी परेशानी न हो। – idieeasy

1

इसका सरल दृश्य स्टूडियो का उपयोग यह करने के लिए।

विजुअल स्टूडियो में असंबद्ध शाखाओं को मर्ज करने के लिए स्रोत नियंत्रण मर्ज विज़ार्ड का उपयोग करें।

इसमें चुनिंदा परिवर्तनों को मर्ज करने का विकल्प है। एकमात्र प्रतिबंध यह है कि परिवर्तन लगातार

+0

यदि आप निरंतर परिवर्तनों को मर्ज करना चाहते हैं तो आप केवल तब तक स्रोत नियंत्रण मर्ज विज़ार्ड खोलने को दोहराएं जब तक आप पूरा नहीं कर लेते। आप प्रत्येक विलय या अंत में एक प्रतिबद्धता के बीच प्रतिबद्ध होना चुन सकते हैं। –