2012-10-11 29 views
5

पर बदली गई फ़ाइलों से गिट आर्काइव मेरे पास रिमोट नंगे रिपोजिटरी (कोई कामकाजी डीआईआर) नहीं है जो इंस्टॉल-टार्स बनाता है। अच्छा काम करता है। लेकिन अब मैं केवल बदली गई फ़ाइलों में से टार्स बनाना चाहता हूं। मैंने इसे इस तरह से आजमाया:नंगे रिपोज़

git archive --format=tar --prefix='/' HEAD `git diff V1.02 --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz 

यह मेरे स्थानीय भंडार के साथ बहुत अच्छा काम करता है। यह नवीनतम संस्करण में टैग किए गए संस्करण V1.02 की फ़ाइलों के साथ एक टैर बनाता है। लेकिन यह नंगे reposities के साथ काम नहीं करता है। क्या कोई और समाधान है?

उत्तर

1

git diff के दो प्रतिबद्ध रूप एक नंगे भंडार (git diff [options] <commit> <commit> [--] [<path>...]) में काम करेंगे।

निम्नलिखित मैं क्या समझ आप चाहते हैं करना चाहिए:

git archive --format=tar --prefix='/' master `git diff V1.02 master --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz 

मैं भी (जैसा कि ऊपर दिखाया गया है) master करने के लिए अपने मूल आदेश से HEAD बदलते आदेश के बाकी के अनुरूप होना करने के लिए सुझाव है, और हो सकता है लचीला अगर कोई व्यक्ति HEAD अंक (वैकल्पिक रूप से उपरोक्त उदाहरण में HEAD के साथ master की सभी घटनाओं को प्रतिस्थापित करता है) को बदलता है।

+0

हे जैकब, आपके उत्तर के लिए धन्यवाद। बहुत बुरा है कि मुझे स्टैक ओवरफ्लो से अधिसूचना नहीं मिली। –

+0

जब मैं आपका आदेश आज़माता हूं, तो गिट मुझे निम्नलिखित देता है: 'घातक: संदिग्ध तर्क 'V1.02': अज्ञात संशोधन या पथ काम करने वाले पेड़ में नहीं। संशोधनों से अलग करने के लिए '-' का प्रयोग करें ' मुझे' - 'कहां रखना है? 'गिट संग्रह --format = tar --prefix = '/' मास्टर 'गिट diff v1.02 - मास्टर - नाम-केवल' | gzip -9> ../tar.tar.gz घातक: खराब संशोधन 'V1.02'' –

+0

'--', यदि उपयोग किया जाता है, तो सभी गैर-पथ विकल्पों के बाद चला जाता है। आपके उदाहरण में, आप इसका उपयोग नहीं करेंगे क्योंकि आप 'गिट diff' के साथ सीमित पथ के किसी भी रूप का उपयोग नहीं कर रहे हैं। –