2009-12-30 24 views
5

मैं 3 डीएमएक्स फ़ाइलों को चरणबद्ध करने के लिए उत्पादन पाइपलाइन में गिट को एकीकृत करना चाहता हूं। जबकि TortoiseGit के माध्यम से गिट के साथ काम करना ठीक है, मैं कस्टम मेनू कमांड को 3dsmax में जोड़ने के लिए मैक्सस्क्रिप्ट से इसके साथ संवाद करना चाहता हूं।क्या मुझे गिट स्थिति का विश्लेषण करना चाहिए या गिटारप का उपयोग करना चाहिए?

क्या मुझे फ़ोल्डर स्थिति निर्धारित करने के लिए git status आउटपुट टेक्स्ट पार्स करना चाहिए या क्या मुझे गिट के साथ सही ढंग से संवाद करने के लिए कुछ रैपिंग टूल का उपयोग करना चाहिए?

मैं gitsharp के बारे में सोच रहा था क्योंकि मैक्सस्क्रिप्ट से dotNet ऑब्जेक्ट्स को कॉल करना आसान है, लेकिन मैंने बाहरी डॉटनेट प्रोग्राम का उपयोग नहीं किया।

उत्तर

2

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

+0

धन्यवाद, बस्टियान्यू! और जहां आप उस XML फ़ाइल को प्राप्त करने की योजना बना रहे हैं? क्या गिट खुद को ऐसी फाइल बनाने के लिए मजबूर किया जा सकता है? क्षमा करें, मैं गिट प्रबंधन में नौसिखिया हूँ। – sergo

+0

जैसा कि मैंने स्वयं द्वारा गिट आउटपुट पार्स किया है, मैं एक एक्सएमएल फाइल बनाने में सक्षम हूं। इसका उपयोग विभिन्न चीजों के लिए किया जा सकता है ... – bastianneu

+1

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

2

मैंने git ls-files खोजा है और मैं इसके आउटपुट प्रारूप से पूरी तरह से संतुष्ट हूं। git status पार्सिंग के लिए भी मानव-उन्मुख था।

मैं Mercurial से git को इसकी स्पष्ट स्थिति कमांड के साथ पसंद करूंगा, लेकिन बड़ी बाइनरी फाइलों के साथ ऐसा लगता है कि git मेरे लिए बेहतर काम करता है।

7

गिट में आम तौर पर "चीनी मिट्टी के बरतन", उच्च स्तरीय आदेश होते हैं जो रोजमर्रा के उपयोगकर्ता इंटरैक्शन के लिए डिजाइन किए जाते हैं, और "नलसाजी" जो निम्न स्तर के कमांड होते हैं जिनमें अधिक चीनी मिट्टी के बरतन बनाने के लिए सरल, स्थिर इंटरफेस होते हैं। आप git man page में एक सूची पा सकते हैं। सेर्गो के उदाहरण का उपयोग करने के लिए, git ls-filesgit status के लिए नलसाजी है। नलसाजी को लपेटना चीनी मिट्टी के बरतन की तुलना में आसान और सुरक्षित है, हालांकि यह पता लगाने के लिए कुछ परेशानियों की आवश्यकता हो सकती है कि पाइपलाइन मानचित्रों का क्या सेट है।

0

मुझे मैक्सस्क्रिप्ट के बारे में कुछ भी नहीं पता है, लेकिन अगर आप यह समझते हैं कि .NET असेंबली कैसे कॉल करें तो आप gitsharp का उपयोग कर सकते हैं और मुझे लगता है कि यह सबसे अच्छा और आसान विकल्प होगा!

gitsharp एपीआई के यूनिट परीक्षणों पर एक नज़र डालें। वे दिखाते हैं कि कैसे स्थिति और अन्य उच्च स्तरीय संचालन जैसे शाखाएं स्विच करना, जांचना, प्रतिबद्धता में बदलाव देखना आदि।

- henon

+0

धन्यवाद, हेनोन। अंततः मुझे maxscript (विधानसभा.LoadFrom विधि द्वारा) से gitsharp चलाने के लिए विधि मिल गया है। यह ठीक काम करता है, लेकिन मैं सी # में मजबूत नहीं हूं, इसलिए स्रोतों के माध्यम से खोजना मेरे लिए मुश्किल है। गिट्सप के Google समूह में बग लोग होंगे। – sergo

+0

कोई समस्या नहीं, आपका स्वागत है! एक नया एपीआई दस्तावेज भी है जिसे हमें और सुधारने की जरूरत है, लेकिन फिर भी यह कुछ भी नहीं है। http://henon.github.com/GitSharp/ देखें – henon

8

Git संस्करण 1.7.0 के बाद से, वहाँ git status के लिए एक --porcelain विकल्प दिया गया है। के उत्पादन:

git status --porcelain 

... स्क्रिप्ट द्वारा उपयोग के लिए डिज़ाइन किया गया है - उत्पादन जिसका प्रारूप की एक कॉम्पैक्ट प्रतिनिधित्व संस्करणों भर में लगातार बना रहेगा। आदमी पेज कहते हैं:

चीनी मिट्टी स्वरूप

चीनी मिट्टी के बरतन प्रारूप लघु प्रारूप करने के लिए समान है, लेकिन Git संस्करणों के बीच एक पीछे की ओर असंगत तरह से बदलने के लिए नहीं गारंटी या उपयोगकर्ता विन्यास पर आधारित है । यह स्क्रिप्ट द्वारा पार्सिंग के लिए आदर्श बनाता है। उपरोक्त लघु प्रारूप का वर्णन कुछ अपवादों के साथ, चीनी मिट्टी के बरतन प्रारूप का भी वर्णन करता है:

  1. उपयोगकर्ता का रंग। स्टेटस कॉन्फ़िगरेशन का सम्मान नहीं किया जाता है; रंग हमेशा बंद हो जाएगा।
  2. उपयोगकर्ता की स्थिति।सापेक्ष पैथ कॉन्फ़िगरेशन का सम्मान नहीं किया जाता है; दिखाए गए पथ हमेशा भंडार रूट के सापेक्ष होंगे।

मशीन पार्सिंग के लिए एक वैकल्पिक-प्रारूप भी अनुशंसित है। उस प्रारूप में, स्थिति फ़ील्ड वही है, लेकिन कुछ अन्य चीजें बदलती हैं। सबसे पहले, -> प्रविष्टियों का नाम बदलने से छोड़ा गया है और फ़ील्ड ऑर्डर उलट दिया गया है (जैसे -> से बनने के लिए)। दूसरा, एक एनयूएल (ASCII 0) प्रत्येक फ़ाइल नाम का पालन करता है, अंतरिक्ष को एक क्षेत्र विभाजक के रूप में स्थानांतरित करता है और समाप्ति की नई लाइन (लेकिन एक स्थान अभी भी स्थिति फ़ील्ड को पहले फ़ाइल नाम से अलग करता है)। तीसरा, विशेष वर्ण वाले फ़ाइल नाम विशेष रूप से स्वरूपित नहीं हैं; कोई उद्धरण या बैकस्लैश-एस्केपिंग नहीं किया जाता है।

तो, के रूप में है कि कहते हैं, आप भी उपयोग करने पर विचार कर सकते हैं:

git status -z 

... एक और भी अधिक मजबूत उत्पादन प्रारूप के लिए।

0

बहुत सारे अधिकतम पहले ही .NET असेंबली का उपयोग कर रहे हैं। यह विकसित करने के लिए सबसे आसान बात होना चाहिए। टेक्स्ट पार्स करने के अलावा .... बहुत नाजुक है। मैं सिर्फ पाठ को पार्स करने के बारे में भूल जाऊंगा।

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