2009-12-31 16 views
15

मैं देखना चाहता हूं कि टीएफएस मेरे आदेश के लिए कैसे काम करेगा। तो मैं अपने मौजूदा जीआईटी भंडार को टीएफएस डेटाबेस में ले जाना चाहता हूं। हमने अपने मौजूदा ब्रांचिंग समर्थन के लिए जीआईटी का उपयोग किया है, इसलिए मैं उस मुद्दे को हल करने के लिए टीएफएस 2010 का उपयोग करना चाहता हूं।टीएफएस स्रोत नियंत्रण माइग्रेशन के लिए गिट

अब सवाल है। मैं अपने जीआईटी रेपो को टीएफएस में कैसे निर्यात करूं? जाहिर है यह किसी तरह की लिपि है। क्या किसी ने ऐसा किया है? कोई सुझाव?

धन्यवाद।

+17

कोई भी गिट से tfs तक क्यों जा सकता है? – hasen

+14

दो शब्द: बेहतर टूलिंग। मुझे पता है कि गिट में बहुत प्रचार है। और श्री टोरवाल्ड्स ने स्वयं इसे एक बैच लिखा, लेकिन इस बात के साथ बातचीत की। मैंने इसे 1 9 महीने के लिए उपयोग किया है, मैंने इसे टीम में पेश किया है और मैं इसे चांदी की बुलेट के रूप में नहीं सोचता। सभी यूआई उपकरण लंगड़ा हैं। कमांड लाइन इंटरफ़ेस वर्बोज़ है। मेरे पास वर्कफ़्लो का समर्थन करने के लिए स्क्रिप्ट का सेट है, लेकिन यह कोई समाधान नहीं है जिस पर मुझे गर्व है। प्लस टीएफएस स्रोत नियंत्रण से अधिक है। यह एक जटिल समाधान है: बग ट्रैकर, बिल्ड सिस्टम, वीएस एकीकरण, एसपी साइट, प्रक्रिया को देखने और बग सबमिट करने के लिए किसी भी डेवलपर्स के लिए एसपी साइट –

+0

गिट एक्सटेंशन https://code.google.com/p/gitextensions/ तेजी से बना रहा है आर्टम की टिप्पणी अप्रचलित। बंडल किए गए यूआई की तुलना में एक बहुत अच्छा यूआई। –

उत्तर

9

माइक्रोसॉफ्ट अब अपने स्वयं के GIT < जारी किया है :

(प्रलेखन से)

एक टीम एक मौजूदा Git रेपो के साथ काम करने के लिए, एक डेवलपर परिवर्तन साझा करने TFS के लिए Git-TF का उपयोग कर निम्नलिखित कार्यप्रवाह का प्रयोग करेंगे।

# Configure the existing repo's relationship with TFS 
git tf configure http://myserver:8080/tfs $/TeamProjectA/Main 

# Fetch the latest changes from TFS and merge those 
# changes with the local changes. 
# Note, merging is important when working in a team configuration. 
# See "Rebase vs. Merge" below. 
git tf pull 

git commit -a -m "merge commit" 

# Check in the merge commit as a single TFS changeset 
git tf checkin 

# Push the merge commit to the origin 
git push 

इसके अलावा, पहले से मौजूद खुला स्रोत GIT-TFS समाधान किया जा सकता है (विंडोज से केवल, माइक्रोसॉफ्ट के समाधान जावा का उपयोग करता है और पार मंच है) Git to TFS 2008 one way migration (with history)

+0

यह समाधान केवल शाखाओं के बिना काम करेगा। यदि आपके पास शाखाएं हैं, तो टीएफएस2013 (गिट) – Philippe

0

आप svn को गिट निर्यात करने में सक्षम हो सकते हैं, और svn से TFVS पर जाने के लिए CS Converter का उपयोग कर सकते हैं। नोट - सीएस कनवर्टर बंद कर दिया गया है, लेकिन ऐसा लगता है कि आप इसे अभी भी डाउनलोड कर सकते हैं।

2

टीएफएस में SVNBridge सेट करें और फिर गिट-एसवीएन क्लोन का उपयोग करें।

+2

यह गिट एसवीएन अपडेट है लेकिन आप सही हैं। मैंने बिल्कुल यह काम किया है। –

+0

मुझे अब [गिट डॉक्स] (http://git-scm.com/docs/git-svn) में 'git svn update' कमांड नहीं दिखाई देता है, हालांकि मुझे' git svn dcommit' मिला, जो " प्रत्येक शाखा को मौजूदा शाखा से सीधे एसवीएन भंडार में ले जाएं, और फिर [एस] रीसेट करें या रीसेट करें (एसवीएन और सिर के बीच अंतर है या नहीं)। यह एसवीएन में एक संशोधन करेगा गिट में प्रत्येक प्रतिबद्धता के लिए। " तो अगर यह वही बात होनी चाहिए? –

5

मैं एक त्वरित बैच फ़ाइल बनाया है, लेकिन आप अपने रास्ते में और (एक कमांड लाइन पाश आदेश) के लिए टीम फाउंडेशन विद्युत उपकरण (tfpt.exe) की आवश्यकता है

अपने वांछित Git फ़ोल्डर में दृश्य स्टूडियो कमांड लाइन और निम्नलिखित चलाएं।

git log --pretty="'%%H',%%ci - %%s" --reverse > commits 

tf workspace temp /new /s:http://{TfsInstance} /i 
tf workfold /map %2 . /workspace:temp 

FOR /F "tokens=1* delims=','" %%a IN (commits) DO git checkout %%a && tfpt online /recursive /exclude:.git*,commits,*.obj,*.exe,_ReSharper*,obj,debug,*.user,*.suo,Bin /adds /deletes /i && tf checkin /author:"{AuthorName}" /comment:"%%b" /i 

tf workspace temp /delete /i 
  1. पहले यह उलटे क्रम (जल्द से जल्द प्रथम) में सभी प्रतिबद्ध जानकारी के साथ एक प्रतिबद्ध फ़ाइल बनाता है।
  2. तो यह एक टीम फाउंडेशन कार्यक्षेत्र ... (अपने TFS यूआरआई के साथ {TtsInstance} को बदलने के लिए सुनिश्चित हो बनाता है।
  3. तो यह कार्यक्षेत्र में एक अस्थायी फ़ोल्डर बनाता है।
  4. तो यह करता फ़ाइल में प्रत्येक पंक्ति के माध्यम से लूप , गिट से चेकआउट करता है, वर्तमान फाइलों में चेक करने के लिए टीएफपीटी का उपयोग करता है (फिर से अपने लेखक नाम के साथ {AuthorName} को प्रतिस्थापित करना सुनिश्चित करें) टिप्पणी में गिट से टाइमस्टैम्प शामिल होगा (दुर्भाग्य से आप टीएफएस सर्वर के समय को बदले बिना चेकइन समय नहीं बदल सकते और मैं इसके खिलाफ अनुशंसा करता हूं) और मूल लेखक का नाम

टी उसने ठीक काम किया, लेकिन शाखाओं को संरक्षित नहीं किया जाएगा। मैंने शाखाकरण को समझने में समय नहीं लगाया क्योंकि यह उस समय नौकरी के लिए एक बड़ा पर्याप्त कारक नहीं था।

उम्मीद है कि यह किसी को कुछ समय बचा सकता है! GIT-TF

यह अनुमति देता है TFS से एक नया git भंडार खींच या GIT अनुमति देने के लिए TFS धक्का करने के लिए है, जो है कि आप क्या करना चाहते हैं को विन्यस्त: GIT के लिए> TFS विस्तार -

+0

मैंने ** tfpt ** सूची को छोड़कर 'Thumbs.db' जोड़ा। मैंने इसे गिट इतिहास से हटा दिया था क्योंकि मैंने _.gitignore_ फ़ाइल को शामिल करने से पहले गलती से जोड़ा था, और जब मैं '.bat' फ़ाइल चलाता था तो त्रुटियां प्राप्त हो रही थीं। –

-1

यह वह जगह है के जवाब में बताया गया है, एक पुराना सवाल, और शायद कोई भी इस के लिए खोज नहीं कर रहा है, लेकिन अब यह बहुत आसान है।

  1. स्रोत कोड नियंत्रण

  2. परियोजना के लिए ले लो Git यूआरएल के रूप में Git साथ TFS में एक टीम परियोजना बनाएँ। यह कुछ ऐसा दिखाई देगा ... https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

  3. आदेश और निष्पादन में कमांड में ड्रॉप करें।

    Git दूरस्थ मूल https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    Git धक्का -u मूल --all

जोड़ने आप सभी की जरूरत नहीं होनी चाहिए।

+0

का उपयोग करने के लिए एक बेहतर समाधान होगा, टीएफएस-होस्टेड जीआईटी का उपयोग करते समय वास्तव में सहायक नहीं है, आपको अपने नियंत्रण में पूर्ण नियंत्रण नहीं मिलेंगे जो आपके पास होगा एक पूर्ण टीएफएस-प्रबंधित परियोजना। –

संबंधित मुद्दे