2012-04-20 16 views
18

हम TFSशाखाओं के बीच टीम फाउंडेशन सर्वर स्विच

में शाखाओं के बीच स्विच कर सकता हूँ

मैं क्या चाहते हैं मैं एक काम कर प्रति डाउनलोड की है और अब मैं अलग शाखा के लिए स्विच करना चाहते हैं सब कुछ डाउनलोड किए बिना, क्योंकि बड़ी परियोजनाओं के लिए यह बहुत लगेगा समय के बाद डेवलपर्स

डाउनलोड करने में बहुत समय व्यतीत करते हैं, यदि कोई कामकाज नहीं है तो यह संभव है ??

+0

आप क्या कर खत्म किया? – granadaCoder

उत्तर

4

टीएफएस शाखाओं में स्रोत नियंत्रण में "शारीरिक रूप से" मौजूद हैं, वे "विशेष फ़ोल्डर" की तरह हैं। इसलिए आप पूरी तरह से चुन सकते हैं कि आप अपने प्राप्त करने के लिए सही फ़ोल्डर को लक्षित करके स्थानीय रूप से कौन सी शाखा प्राप्त करते हैं।

आप उदाहरण के लिए है, तो:

  • परियोजनाओं [फ़ोल्डर]
    • PROJECTA [फ़ोल्डर]
      • देव [शाखा]
      • V1 [शाखा]
    • ProjectB [फ़ोल्डर]
      • देव [शाखा]
      • V1 [शाखा]

और आप "देव" का ही सामग्री के साथ "परियोजनाओं" के स्तर पर प्राप्त करना चाहते हैं, तो आप में मैपिंग बनाते हैं अपने कार्यस्थान परिभाषा PROJECTA और बी

+0

मैं वर्तमान proj निकल और एक अन्य शाखा सही करने के लिए बाध्य कर सकता है ?? – user804401

+0

आपका परियोजना दोहराया जाएगा, वहाँ शाखा प्रति एक रूप होगा।प्रोजेक्ट को लोड करने के लिए आप पहले उस शाखा को स्थित करेंगे जिसे आप उपयोग करना चाहते हैं, फिर अंदर मौजूद परियोजना को लोड करें। – Nock

-1

की V1 शाखाओं आप एक से अधिक शाखाओं के बीच स्विच कर सकते हैं, जब तक कि आप एक ही कार्यक्षेत्र का उपयोग कर रहे हैं और कार्यशील निर्देशिका शाखाओं शामिल लबादा के लिए।

+6

हाँ लेकिन आप यह कैसे कर सकते हैं? –

+0

@ मॉरीज़ियो डेनमार्क में मेरा मानना ​​है कि जेहान 33 ग्रहण के माध्यम से टीएफएस का उपयोग करके शाखाओं को बदलने के बारे में बात कर रहा है, जो संभव है। ओपी ने यह संकेत नहीं दिया कि वे किस आईडीई का उपयोग कर रहे हैं – ethesx

13

आप get आदेश करने के लिए अपने कार्यक्षेत्र मैपिंग बदल रहा है और /remap ध्वज का उपयोग करके कमांड लाइन ग्राहक (केवल मतभेद को डाउनलोड) से शाखाओं स्विच कर सकते हैं:

tf workfold /map $/Branch1 C:\Work 
tf get C:\Work /version:T /recursive 
tf workfold /unmap $/Branch1 
tf workfold /map $/Branch2 C:\Work 
tf get C:\Work /remap /version:T /recursive 
+1

क्या आईडीई से भी ऐसा करना संभव है? जैसे उसी कोडबेस की सभी शाखाओं को उसी मैप किए गए स्थानीय वर्कस्पेस फ़ोल्डर में सेट करें, और स्विच का उपयोग किया जाता है? –

+1

निर्बाध प्लग: मैंने इस तरह की चीजें * अधिक * आसान बनाने के लिए [TfDash] (https://bitbucket.org/Sumo/tfdash) प्रोजेक्ट बनाया है। 'टीएफ-स्विच [टीएफएस शाखा पथ] 'आपको बस इतना ही चाहिए। – Sumo

+0

क्या मैं इसे सही ढंग से समझता हूं कि पहले दो पंक्तियां मानचित्र और प्रारंभिक शाखा प्राप्त करती हैं, इसलिए यदि मेरे पास पहले से ही स्थानीय रूप से है तो मुझे उन्हें चलाने की आवश्यकता नहीं है? और वह पंक्ति 3 शाखा को अनमैप्स करती है, मुझे स्विच करने की आवश्यकता है, इसलिए यदि मैंने इसे स्थानीय रूप से मैप नहीं किया है तो मुझे इसकी आवश्यकता नहीं है? तो लाइन 4 में मैं शाखा 2 को उस फ़ोल्डर में मैप करता हूं जहां शाखा 1 पहले ही मैप किया गया है (इसे अनमैप करने की कोई ज़रूरत नहीं है?) और फिर वास्तव में स्थानीय संस्करण को लाइन 5 में स्विच करें। – ElDog

1

टीम एक्सप्लोरर हर जगह के लिए एक "स्विच है शाखा "कमांड, जो शायद आप जो खोज रहे हैं। ऐसे प्रयोजन के लिए अपने साथी Isak Savo बनाई उपयोगी बैच -

विजुअल स्टूडियो, दूसरे हाथ पर, एक ही आदेश सिर्फ ज्ञान का आधार बढ़ाने के लिए नहीं है ...

3

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

@echo off 
rem Command to switch the current source tree to a new branch. 
rem It's best to not have any pending changes. 
set DEVBRANCH=$/dir/src1 
set RELEASEBRANCH=$/dir/src2 
set SOURCEDIR=c:\sources directory\src 

if exist "%SOURCEDIR%" goto ASK 

echo Source code directory (%SOURCEDIR%) not found, please edit this script to point to the correct directory 
pause 
exit 

:ASK: 
set TARGET= 
echo Available branches are: 
echo Dev: %DEVBRANCH% 
echo Release: %RELEASEBRANCH% 
set /P ANSWER=Specify target branch? [Dev, Release] 
cls 
if /I "%ANSWER%"=="Release" set TARGET=%RELEASEBRANCH% 
if /I "%ANSWER%"=="Dev" set TARGET=%DEVBRANCH% 
if /I "%ANSWER%"=="quit" goto END 
if [%TARGET%] NEQ [] goto SWITCH 

echo "%ANSWER%" unknown, please answer Dev or Release. Specify quit to cancel 
GOTO ASK 

:SWITCH 
rem Navigate to the mapping source folder to avoid "Unable to determine the workspace..." error while invoking tf commands. 
echo Changing directory context 
pushd %SOURCEDIR% 

echo Switching to branch %TARGET% 
echo - Creating new mapping... 
tf workfold /map "%TARGET%" "%SOURCEDIR%" 
echo - Get latest version... 
tf get "%SOURCEDIR%" /remap /version:T /recursive 

popd 
goto END 

:END 

switch_branch.cmd पर और अपनी मशीन से किसी भी निर्देशिका से निष्पादित करें।

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