लिनक्स: ज़िप संग्रह बनाते समय शीर्ष स्तर-निर्देशिका निर्दिष्ट करना


17

मेरे पास सामान्य निर्देशिका संरचना (src /, bin /, ...) के साथ परियोजना है, अर्थात

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

और निम्नलिखित निर्देशिका संरचना के साथ एक संग्रह बनाना चाहेंगे:

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

क्या ऐसा करने का एक साफ तरीका है, जो project-name/कहीं और एक अस्थायी निर्देशिका बनाने से बचता है, फिर फ़ाइलों zip -r ...को उस अस्थायी निर्देशिका पर कॉल करने की नकल करता है ?

(मैं मूल रूप से किसी प्रकार के पथ उपसर्ग या सापेक्ष पथ विकल्प की तलाश में हूं।)

जवाबों:


9

हो सकता है कि यह आपके लिए पहले से ही हो, लेकिन हर चीज की नकल करने के बजाय सिर्फ एक लिंक का उपयोग क्यों न करें?

ln -s project-name project-name-version

फिर zip -rसिम्बल लिंक के माध्यम से उपयोग करें ( zipक्या डिफ़ॉल्ट रूप से सिम्फ़र लिंक लिंक होगा)? जब आप पूरा कर लें तो आप rmसिंपल सी लिंक कर सकते हैं । शायद यह सबसे सुरुचिपूर्ण समाधान नहीं है, लेकिन मैं इसे zipसीधे रूप से करने का एक स्पष्ट तरीका नहीं जानता ।


1
tarयदि आप -hध्वज का उपयोग करते हैं तो यह भी काम करता है ।
काइल स्ट्रैंड

(मैं भी zध्वज का उपयोग कर रहा हूं; मुझे यकीन नहीं है कि अगर यह इसे प्रभावित करता है।)
काइल स्ट्रैंड

15

यह एक उत्तर की तुलना में अधिक सलाह है: Git का उपयोग करें !

यदि आप अपने प्रोजेक्ट के लिए Git रिपॉजिटरी सेटअप करते हैं, तो पूरी बात काफी सरल हो जाती है:

git archive HEAD --prefix=project-name-version/ \
    --format=zip -o project-name-version.zip

1
बहुत बढ़िया सलाह, धन्यवाद। git पुरालेख प्रलेखन: git-scm.com/docs/git-archive
Meglio

1
संस्करण नियंत्रण का उपयोग करते समय यह एक अच्छा विचार है, यह उत्तर सामान्य मामले के लिए प्रश्न से मेल नहीं खाता है।
raimue

@Raim "यह एक उत्तर की तुलना में अधिक सलाह है: Git का उपयोग करें!" 4 साल की तरह के बाद से वहाँ लिखा है, आप इसे ओर इशारा करते हुए के लिए धन्यवाद ...
साइरस

1
यदि यह एक जवाब के रूप में इरादा नहीं था, तो इसे एक टिप्पणी में परिवर्तित किया जाना चाहिए।
raimue

1
@Gregor मुझे लगता है कि एक वांछनीय व्यवहार है क्योंकि ऐसी फाइलें वास्तव में परियोजना का हिस्सा हैं, वैसे भी आप गिट विशेषताओं का उपयोग कर सकते हैं, उदाहरण के लिए, .gitattributesयुक्त फ़ाइल बनाएँ .git* export-ignore
cYrus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.