2015-05-28 14 views
5

के दौरान स्थानीय फ़ाइल TFS संस्करण नियंत्रण में है, तो मैं प्रोग्रामेटिक रूप से कैसे पता लगा सकता हूं कि मेरे पास एक छोटा सा घर दृश्य स्टूडियो एक्सटेंशन (वीएस 2013) है और एक सुविधा के लिए, मुझे यह पता लगाना होगा कि डिस्क पर कोई फ़ाइल है या नहीं टीएफएस संस्करण नियंत्रण के तहत या नहीं।ऑफ़लाइन

(द्वारा "TFS संस्करण नियंत्रण में" मेरा मतलब है कि प्रश्न में फ़ाइल, TFS द्वारा पता लगाया जाता है ताकि वह चेक आउट किया जा सकता है, संपादित,, में जाँच आदि)

निम्नलिखित कोड है मेरे पास आज क्या है, और जब तक आप टीएफएस से जुड़े होते हैं तब तक यह ठीक काम करता है। यह एक Workspace

// m_workspace is of type Microsoft.TeamFoundation.VersionControl.Client.Workspace 
var items = m_workspace.GetItems(
       new[] {new ItemSpec(filename, RecursionType.None)}, 
       DeletedState.Any, 
       ItemType.Any, 
       false, 
       GetItemsOptions.LocalOnly | GetItemsOptions.Unsorted); 
return items.First().Items.Any(); 

का एक उदाहरण अब उपयोग करता है, समस्या यह है कि जब आप कार्यालय फ़ायरवॉल के भीतर नहीं हैं (या वीपीएन के माध्यम से जुड़ा), TFS सर्वर पहुंच योग्य नहीं है। वास्तव में, होस्टनाम भी हल नहीं होगा।

तो मेरा सवाल है: क्या यह पता लगाने के लिए कोई फ़ाइल है कि कोई फ़ाइल संस्करण नियंत्रण में है या नहीं? अधिमानतः सार्वजनिक एपीआई का उपयोग कर, लेकिन मैं एक बदसूरत हैक अगर यह है कि यह क्या ले जाता है के साथ ठीक हूँ ...

+0

यह एक स्थानीय कार्यस्थान या सर्वर कार्यक्षेत्र है? सर्वर वर्कस्पेस के साथ ऐसा करने का कोई तरीका नहीं है (क्योंकि इस प्रश्न का उत्तर देने के लिए स्थानीय रूप से पर्याप्त डेटा नहीं है)। हालांकि, यह एक स्थानीय कार्यक्षेत्र के साथ संभव होना चाहिए। –

+0

दुर्भाग्य से, यह एक सर्वर वर्कस्पेस है। मैं समझता हूं कि ऑफ़लाइन होने पर, सर्वर पर वर्तमान स्थिति को जानना असंभव है, लेकिन जब भी आखिरी 'नवीनतम प्राप्त करें' किया जाता है, तो मुझे बस राज्य को जानना ठीक होगा। –

+0

यह एक अच्छा सवाल है, लेकिन अफसोस की बात है, क्लाइंट पर रखा गया एकमात्र राज्य वर्कस्पेस मैपिंग है। यह * आपकी मदद कर सकता है: ये आपको यह निर्धारित करने देगा कि फ़ाइल मैप किए गए फ़ोल्डर के अंदर है या नहीं। आप तब तक कटौती करने में सक्षम हो सकते हैं कि मैप किए गए फ़ोल्डर के अंदर केवल पढ़ने वाली फ़ाइल TFS में है। लिखने योग्य फाइलें ट्रिकियर हैं: उन्हें चेक आउट किया जा सकता है, वे लंबित हो सकते हैं या वे केवल ऐसी फाइलें हो सकती हैं जो स्रोत नियंत्रण में जोड़े जाने के लिए नहीं हैं। (हालांकि हम उन फ़ाइलों को स्पष्ट रूप से क्लोक करने की अनुशंसा करेंगे।) अगर वे उन चेतावनियों को देने में मदद करेंगे तो मैं वर्कफ़ोल्ड जानकारी प्राप्त कर सकता हूं। –

उत्तर

-1

आप इस का उपयोग कर सकते हैं:

string underTfs = Microsoft.TeamFoundation.VersionControl.Client.Workstation.Current.IsMapped(path); 
+0

यह विधि हमेशा सत्य होती है भले ही दी गई फ़ाइल मैप नहीं की जाती है। –

+0

हाँ, मैंने परीक्षण किया, यह हमेशा सच हो जाता है। –

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