2011-12-19 9 views
14

के साथ दो टीएफएस शाखाओं को मर्ज करें मैं का उपयोग कर रहा हूं, और मैं सोच रहा था कि git-tfs का उपयोग करके दो टीएफएस शाखाओं को मर्ज करना संभव है। मेरे पास दो शाखाएं हैं $/MyCompany/Dev & $/MyCompany/रिलीज़-3.3। रिलीज-3.3 देव शाखा से निकलती है। दोनों को गिट टीएफएस का उपयोग करके विभिन्न गिट रिपॉजिटरीज के रूप में चेक किया जाता है।गिट टीएफएस

मैं देव शाखा में परिवर्तनों को फिर से शामिल करना चाहता हूं। क्या इसे git-tfs के साथ हासिल किया जा सकता है या क्या मुझे टीएफएस उपकरण का उपयोग करके इसे करने का प्रयास करना होगा?

+0

Git TFS क्यों साथ? –

+2

मैं गिट मर्ज एल्गोरिदम का उपयोग करना पसंद करूंगा, क्योंकि ऐसा लगता है कि यह स्वचालित रूप से अधिक विवादों को हल करता है। – Ceilingfish

उत्तर

6

मैं ऐसा करने का अगर hacky तरह से एक भयानक पाया,। गिट टीएफएस गिट कॉन्फ़िगरेशन का उपयोग कर टीएफएस के क्षेत्रों के बारे में जागरूकता का प्रबंधन करता है। विशेष रूप से 0 विशेषताएँ remote; यूआरएल, भंडार और लाने, उदाहरण के लिए:

tfs-remote.default.url=http://tfsserver:8080/tfs/collection 
tfs-remote.default.repository=$/Product/Branch/Component 
tfs-remote.default.fetch=refs/remotes/default/master 

आप default करने के लिए एक भिन्न नाम से फिर इन 3 गुण सेट करके एक और remote जोड़ सकते हैं। उदाहरण:

tfs-remote.feature_branch.url=http://tfsserver:8080/tfs/collection 
tfs-remote.feature_branch.repository=$/Product/FeatureBranch/Component 
tfs-remote.feature_branch.fetch=refs/remotes/default/feature_branch 

आपको अब git tfs bootstrap जारी करने की आवश्यकता हो सकती है।

फिर आप इस मुद्दे को कर सकते हैं:

git tfs fetch -i feature_branch 

तब का उपयोग कर प्रतिबद्ध विलय:

git merge tfs/feature_branch 
+1

क्या यह वास्तव में टीएफएस में विलय लंबित परिवर्तन बनाता है? यदि नहीं, तो आप अगले व्यक्ति को खोने की तरह हैं जो एक टीएफएस क्लाइंट से विलय करना चाहता है, क्योंकि टीएफएस ने विलय दर्ज नहीं किया होगा जैसा कि किया गया है। इस प्रकार, यह फिर से उन परिवर्तनों को मर्ज करने का प्रयास करेगा। (माना जाता है कि संघर्ष काफी मामूली होंगे, लेकिन यह अभी भी परेशान हो सकता है।) –

+0

आप सही हैं, यदि एक से अधिक उपयोगकर्ता विलय शाखाएं हैं तो यह तंत्र समस्याएं पैदा करेगा। मुझे यहां एक बेहतर समाधान मिल सकता है: http://stackoverflow.com/a/7334268/58991 – Ceilingfish

+0

क्या किसी को पता है कि गिट-टीएफ (गिट-टीएफएस नहीं) इस तरह के विलय की अनुमति देता है? क्या चेकइन मर्ज के रूप में होता है या बस नया कोड होता है? –

-1

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

HTH

10

Git-TFS 0.16 के बाद से, आप TFS शाखाओं (branch कमांड के साथ) का प्रबंधन कर सकते इसलिए अब आप आसानी से कर सकते हैं मौजूदा शाखा में प्रवेश करें, एक बनाएं और टीएफएस शाखाओं को मर्ज करें!

https://github.com/git-tfs/git-tfs/blob/master/doc/commands/branch.md#initialize-an-existing-tfs-branch

और रिहाई के बाद से 0.19, आप 2 TFS शाखाओं का एक Git मर्ज और TFS में यह चेक इन (rcheckin के साथ) कर सकते हैं और यह एक मर्ज changeset के रूप में जाँच की जाएगी: https://github.com/git-tfs/git-tfs/blob/master/doc/commands/rcheckin.md#checkin-a-merge-changeset

एकमात्र सीमा (टीएफएस के कारण) यह है कि गिट के साथ अपनी विलय करने से पहले और टीएफएस में इसकी जांच करने से पहले सभी कामों को पहले ही टीएफएस में चेक किया जाना चाहिए था।

तो अब 2TFS शाखाओं के साथ तुलना में अधिक आसानी विलय और उन में जाँच कर सकते हैं ...

+0

ध्यान दें कि 30-सितंबर -2013 तक, दस्तावेज इंगित करता है कि 'init-branch' को' शाखा --init' –

+0

@ डेविड गार्डिनर के अधिकार में छोड़ दिया गया है लेकिन 2 बराबर हैं (2 एक दूसरे के लिए एक रैपर है) और आदेश 0.20 तक हटाया नहीं जाएगा (और 0.1 9 अभी भी रिलीज़ नहीं है)। – Philippe

+0

कोई चिंता नहीं .. मुझे लगता है कि हम मान सकते हैं कि आप git-tfs जानकारी के लिए एक अच्छा स्रोत हैं :-) –