2008-08-25 16 views
6

तो आप जानते हैं कि बहुत सारे मैक ऐप्स "बंडल" का उपयोग करते हैं: यह आपके एप्लिकेशन में एक फ़ाइल की तरह दिखता है, लेकिन यह वास्तव में कई फ़ाइलों के साथ एक फ़ोल्डर है।मैक "बंडल" फ़ाइलों को संस्करणित करने के लिए सर्वोत्तम दृष्टिकोण

एक संस्करण नियंत्रण प्रणाली इस संभाल करने के लिए, यह करने की जरूरत है:

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

सबसे अच्छा तरीका मौजूदा संस्करण नियंत्रण प्रणाली के साथ इस संभाल करने पर कोई भी विचार के रूप में इस का प्रबंधन? क्या इस संस्करण में संस्करण संस्करणों में से कोई भी अधिक उपयुक्त है?

उत्तर

1

वितरित एससीएम सिस्टम जैसे गिट और मर्कुरियल के लिए मैथ्यू के रूप में एक समस्या नहीं होनी चाहिए।

यदि आपको सबवर्सन या सीवीएस जैसे केंद्रीकृत एससीएम का उपयोग करने की आवश्यकता है, तो आप उन्हें स्रोत नियंत्रण में जांचने से पहले अपने बंडलों को ज़िप (संग्रह) कर सकते हैं। यह दर्दनाक हो सकता है और एक अतिरिक्त कदम उठाता है। वहाँ टेपेस्ट्री सेंट्रल में इस बारे में एक अच्छा ब्लॉग पोस्ट है:

Mac OS X bundles vs. Subversion

यह लेख एक गहरे लाल रंग का स्क्रिप्ट है कि आप के लिए संग्रह का प्रबंधन करता है को दर्शाता है।

2

फ़ाइल पर आधारित विशेष संस्करणों में Mercurial, निर्देशिका संरचना नहीं। इसलिए, आपका काम करने वाला पेड़, जो एक पूरी तरह से भंडारित भंडार है, प्रत्येक स्तर पर .svn फ़ोल्डरों को थूक नहीं देता है।

इसका यह भी अर्थ है कि एक निर्देशिका या अन्य बंडल की तरह प्रतिस्थापित की गई निर्देशिका को अभी भी संशोधन नियंत्रण के तहत विशेष फ़ाइल नामों के साथ सामग्री मिल जाएगी। फ़ाइल नामों की निगरानी की जाती है, इनोड्स या किसी भी तरह की कल्पना नहीं!

जाहिर है, यदि बंडल में कोई नई फ़ाइल जोड़ दी गई है, तो आपको इसे अपने भंडार में स्पष्ट रूप से जोड़ना होगा। इसी तरह, बंडल से एक फाइल को हटाने के लिए 'एचजी आरएम' के साथ किया जाना चाहिए।

ओएस एक्स के लिए अभी तक कोई सभ्य Mercurial GUI नहीं है, लेकिन यदि आप जो भी करते हैं वह जोड़/प्रतिबद्ध/विलय होता है, तो कमांड लाइन का उपयोग करना मुश्किल नहीं है।

1

भविष्य से एक अद्यतन:

तो मुझे याद है, SVN में बंडलों के प्रबंधन के साथ समस्या सभी .svn फ़ोल्डरों हर बार जब आप एक बंडल बनाया मंजूरी दे दी हो रही थी। यह अब कोई समस्या नहीं होनी चाहिए, अब एसवीएन रूट पर एक ही .svn फ़ोल्डर में सब कुछ संग्रहीत करता है।

1

इस धागे को डेलाइट पर वापस लाएं, क्योंकि अक्टूबर 2013 iWork (पेज 5.0 इत्यादि) अब 'फ्लैट फ़ाइल' (ज़िपित) में संग्रहित करने की अनुमति नहीं देता है, लेकिन केवल बंडल के रूप में।

समस्या ऐसी संरचनाओं के अंदर संस्करण नियंत्रण छिपे हुए फ़ोल्डरों का निर्माण नहीं है (ठीक है, यह svn के लिए है), लेकिन Mark के रूप में सवाल में कहा गया है: स्वचालित, निष्क्रिय फ़ाइलों को जोड़ा या निकाला गया (एप्लिकेशन द्वारा, इस मामले में iWork) तो मुझे मैन्युअल रूप से ऐसा करने की आवश्यकता नहीं होगी।

स्पष्ट रूप से, iWork और Apple केवल iCloud उपयोगिता से परेशान हैं। फिर भी मेरे पास एक मर्कुरियल रेपो में .pages, .numbers और .keynote को संग्रहीत करने के लिए एक वास्तविक मामला है। अद्यतन के बाद, यह सबकुछ अलग करता है। क्या करें?

परिशिष्ट:

मिला 'hg addremove' यह मेरे लिए काम कर देता है।

$ hg help addremove 
hg addremove [OPTION]... [FILE]... 

add all new files, delete all missing files