आप गलत शाखा पर काम करने से कैसे बचते हैं?


27

सावधान रहना आमतौर पर समस्याओं को रोकने के लिए पर्याप्त है, लेकिन कभी-कभी मुझे उस शाखा को दोबारा जांचने की आवश्यकता होती है जिस पर मैं काम कर रहा हूं ( जैसे "हम्म ... मैं devशाखा में हूं , ठीक है?") एक यादृच्छिक के स्रोत नियंत्रण पथ की जांच करके? फ़ाइल।

एक आसान तरीके की तलाश में, मैंने उसके अनुसार समाधान फ़ाइलों के नामकरण के बारे में सोचा ( उदाहरण के लिए MySolution_Dev.sln ) लेकिन प्रत्येक शाखा में अलग-अलग फ़ाइल नामों के साथ, मैं समाधान फ़ाइलों को मर्ज नहीं कर सकता।

यह एक सौदे का बड़ा हिस्सा नहीं है, लेकिन क्या आप सही शाखा में हैं यह सुनिश्चित करने के लिए किसी भी तरीके या "छोटी चाल" का उपयोग करते हैं? मैं TFS 2008 के साथ Visual Studio 2010 का उपयोग कर रहा हूं।


2
यह एक वी.एस. 2010 एक्सटेंशन के लिए एक अच्छे उम्मीदवार की तरह लगता है जिसे लिखा जा सकता है जो शाखा को इंगित करने के लिए किसी प्रकार के विन्यास योग्य दृश्य क्यू की अनुमति देता है। शायद उपयोगकर्ता सेटिंग्स के अनुसार सॉल्यूशन एक्सप्लोरर की पृष्ठभूमि को रंगीन करना (मैं देव के लिए हरा करूँगा, क्यूए के लिए पीला और उत्पादन के लिए लाल)।
जेसी सी। स्लीकर

अच्छा विचार, यहां तक ​​कि वीएस शीर्षक पट्टी पर एक संकेतक भी मदद करेगा।
१६

1
मैं कहूंगा कि बहुत प्रभावी होना चाहिए। मेरे पास मेरी git शाखा शामिल करने के लिए मेरा bash प्रॉम्प्ट सेट है और क्या स्रोत फाइलें साफ हैं या यदि उन्हें एक चेकइन की जरूरत है
Daenyth

क्या TFS के पास git statusया उसके बराबर कुछ नहीं है hg status?

मैं टीएफएस संचालन के लिए वीएस उपयोगकर्ता इंटरफ़ेस का उपयोग करता हूं, इसलिए मुझे वास्तव में एक विचार नहीं है।
henginy 10

जवाबों:


16

मैं इसका उपयोग कर रहा हूं http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

उदाहरण के लिए अपना शीर्षक अपडेट करता है:

विकास \ myproject

या

मेन + मायप्रोजेक्ट

या

रिलीज \ MyProject

आशा करता हूँ की ये काम करेगा


ऐसा करने के लिए लगता है, मैं इसे एक कोशिश करूँगा ..
henginy

मैं इस विस्तार का उपयोग इस उद्देश्य के लिए करता हूं। वास्तव में, मैं लिंक पोस्ट करने वाला था, जब मैंने देखा कि यन्नोक में पहले से ही था।
बोबसन

1
मैंने इसे एक का उपयोग करके समाप्त किया क्योंकि मैं इसे शीर्षक में देख सकता हूं कि मैं किस शाखा पर हूं। वाकई शानदार!!!
पायोत्र कुला

हाँ, यह वास्तव में बहुत सुविधाजनक है!
22

16

अलग-अलग कार्यशील निर्देशिकाओं को नाम दें। यही है, अगर आपकी परियोजना का शीर्षक "MY_PROJECT" है, तो प्रत्येक शाखा के लिए एक अलग कार्यशील निर्देशिका बनाएं। यदि "देव" नामक एक शाखा है, तो आपको ट्रंक के लिए एक निर्देशिका और देव के लिए एक निर्देशिका की आवश्यकता होगी, जैसे:

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev

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

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

1
हाँ, यह ठीक है कि मैं कैसे "एक यादृच्छिक फ़ाइल के स्रोत नियंत्रण पथ की जांच करता हूं", और मैं एक तेज़ तरीका खोजने की कोशिश कर रहा हूं :)
henginy

@ फेंगिनी ओह, सही। आपने कहा कि ओ.पी. मैं अपने सिर के ऊपर से एक बेहतर तरीका नहीं जानता। लगता है जैसे मैंने आपकी स्थिति में बिल्कुल भी सुधार नहीं किया है। :-(
मैथ्यू रोडेटस

मुझे स्पष्ट करना चाहिए कि मेरे प्रश्न में बेहतर है। आपके सहयोग के लिए धन्यवाद!
१०

8

मैं एक सामान्य देव या ट्रंक शाखा में काम नहीं करता।

मैं हमेशा सुविधा शाखाओं में काम करता हूँ। जब कोई सुविधा होती है, तो मैं इन चरणों का पालन करता हूं।

  1. ओपन सोर्स कंट्रोल एक्सप्लोरर।
  2. वर्तमान सुविधा शाखा में देव से विलय।
  3. किसी भी संघर्ष को ठीक करें और सुनिश्चित करें कि सब कुछ अभी भी काम करता है।
  4. फिर से जाँच करें। देव शाखा में विलय की सुविधा।
  5. देव समाधान खोलें।
  6. चेकइन देव शाखा।
  7. देव समाधान बंद करें।
  8. सीआई को बनाने और तैनात करने दें।

मेरे पास केवल एक समय में कुछ मिनट के लिए देव शाखा खुली है और इसे तुरंत बंद करें।


7

आप प्रत्येक शाखा में एक खाली फ़ाइल बना सकते हैं, जैसे कि THIS_IS_TRUNK.txt ट्रंक में, और DEIS में THIS_IS_DEV.txt।


2
यह वास्तव में काम कर सकता है..तो समाधान खोजकर्ता में इसे स्थानांतरित करने के लिए फ़ाइल नाम के सामने एक अंडरस्कोर के साथ।
henginy

6

मैं कमांड लाइन से अपना (डी) वीसीएस काम बहुत करता हूं। जहाँ आप हैं वहां आपके शीघ्र प्रदर्शन को मैं अत्यधिक मानता हूँ। उदाहरण के लिए, मेरा संकेत जब Git रेपो में दिखता है (मैं SVN के लिए भी ऐसा करता हूं):

[BranchName]RepoTop/path/to/current/wd >>

और यदि रेपो वर्तमान में गंदा है (परिवर्तन नहीं हुआ):

[BranchName!!]RepoTop/path/to/current/wd >>

मेरे पास बैकग्राउंड सेट करने के लिए लाल है अगर ठेस में प्रवेश किया है, जैसी चीजें। मुझे लगता है कि मेरे लिए सुपर प्रभावी होने के लिए सरल दृश्य सूचनाएँ हैं।

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


4

एक मुक्त विज़ुअल स्टूडियो एक्सटेंशन है जिसे टीएफएस सॉल्यूशन इन्फो कहा जाता है जो इसके साथ मदद कर सकता है। यह आपको एक छोटी सी खिड़की में वर्तमान शाखा और कार्यक्षेत्र दिखाता है जिसे आप जहाँ चाहें डॉक / पिन कर सकते हैं।


कमाल देखो, लेकिन समर्थन करता है VS2012
Piotr Kula

3

मैं VSCommands एक्सटेंशन का उपयोग कर रहा हूं (विजुअल स्टूडियो 2012 के साथ, लेकिन एक 2010 संस्करण है) और यह सुविधा को स्क्रीन के ऊपरी बाएं कोने में शाखा नाम के साथ-साथ समाधान एक्सप्लोरर में डालता है।

किसी भी तरह से उत्पाद के साथ संबद्ध नहीं है, बस एक खुश उपयोगकर्ता।


1
यह बहुत बुरा लग रहा है दुख की बात है कि आपको उन सभी अतिरिक्त सामानों के लिए भुगतान करना पड़ा, जिनकी आवश्यकता नहीं हो सकती है :(
पायोत्र कुला

2

मैं एक शाखा में लगभग सब कुछ करके गलत शाखा में काम करने से बचता हूं (ट्रंक में - तथाकथित "अस्थिर ट्रंक" शाब्दिक रणनीति )।

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

  • मैं कुछ हद तक भाग्यशाली भी हूं कि मेरी अधिकांश परियोजनाओं में प्रबंधन ने ग्राहकों को पुराने वाले पैचिंग के बजाय नए रिलीज का उपयोग करने के लिए राजी करना पसंद किया - यह शाखाओं में अपडेट के उत्पादन के बाद के उत्पादन को लगभग नगण्य न्यूनतम पर लाता है ।

यह वास्तव में पिछले रिलीज को बनाए रखने के लिए अच्छा नहीं है। उस स्थिति में मैं केवल प्रायोगिक उद्देश्यों के लिए एक शाखा का उपयोग करूँगा जो मुझे लगता है।
henginy 10

@ विलायती मैं उन मामलों को याद नहीं कर सकता, जब मेरे पास पिछली रिलीज को बनाए रखने का लक्जरी नहीं था। हालाँकि, प्रबंधन के रवैये से यहाँ एक बड़ा अंतर आ सकता है: इसके आधार पर या तो 1-2 शाखाओं / वर्ष को पुरानी शाखाओं में लागू कर सकते हैं या हर समय इन आधे के साथ गड़बड़ कर सकते हैं
gnat

1

एक विशिष्ट उत्तर उस संस्करण नियंत्रण सॉफ़्टवेयर पर निर्भर करता है जिसका आप उपयोग कर रहे हैं, लेकिन आमतौर पर एक कमांड है जो आपको आसानी से उस शाखा को देखने देता है जिस पर आप काम कर रहे हैं। उदाहरण के लिए, सबवर्सन के साथ, svn infoउस ब्रांच के URL को देखने के लिए डायरेक्टरी में कमांड का उपयोग करें । यदि आप किसी विशेष फ़ाइल में अधिक रुचि रखते हैं, तो आप उसे भी निर्दिष्ट कर सकते हैं:

caleb-dev$ svn info foo.c 
Path: foo.c
Name: foo.c
URL: https://svn.mycompany.com/repo/sample/branches/caleb-dev/foo.c
Repository Root: https://svn.mycompany.com/repo/sample
Repository UUID: d62f7aef-3ad2-6098-12a-c16647d854ab
Revision: 1042
Node Kind: file
Schedule: normal
Last Changed Author: caleb
Last Changed Rev: 1031
Last Changed Date: 2011-06-07 15:28:27 -0400 (Tue, 07 Jun 2011)
Text Last Updated: 2011-06-08 03:08:12 -0400 (Wed, 08 Jun 2011)
Checksum: 123456789098765432123456789098

URL से, मैं देख सकता हूं कि foo.c की मेरी कॉपी caleb-dev शाखा में है।

मुझे ऐसा करने की आवश्यकता नहीं है क्योंकि मेरी स्थानीय निर्देशिका का शाखा के समान नाम है। मेरी कमांड लाइन प्रॉम्प्ट पर एक त्वरित नज़र आमतौर पर यह पुष्टि करने के लिए पर्याप्त है कि मैं सही निर्देशिका में हूं, और इसलिए सही शाखा में काम कर रहा हूं।


1

यहाँ पहले से ही बहुत सारे उत्तर हैं, लेकिन हमारे द्वारा काम किए गए सरल समाधान पर कोई भी नहीं छूता है: प्रत्येक शाखा के लिए, एक नया VM बनाएं जिसमें एक देव वातावरण हो, और उचित शाखा से जांच करें। आपको केवल ऐसा करना है और इसे एक बार ठीक करना है, और फिर आप शाखाओं को स्विच करने के लिए केवल वीएम को स्विच करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.