2011-11-23 21 views
42

आप लिनक्स निष्पादन योग्य फ़ाइलों को .gitignore में एक स्पष्ट एक्सटेंशन दिए बिना और उन्हें किसी विशिष्ट या/bin निर्देशिका में रखे बिना कैसे जोड़ते हैं? अधिकांश को सी फ़ाइल के समान नाम दिया जाता है, जिससे उन्हें ".c" एक्सटेंशन के बिना संकलित किया गया था।लिनक्स निष्पादन योग्य फ़ाइलों को .gitignore में कैसे जोड़ें?

+0

यह http://stackoverflow.com/questions/5711120/gitignore-without-binary-files का एक डुप्लिकेट है जो उन्हें मर्ज कर सकता है। –

+0

नहीं, निष्पादन योग्य फ़ाइलों और बाइनरी फ़ाइलों के बीच एक अंतर है। मैं निष्पादन योग्य स्क्रिप्ट और बाइनरी फ़ाइलों दोनों को अनदेखा करने की आवश्यकता को देखता हूं। मुझे नहीं लगता कि यह सवाल एक डुप्लिकेट है। – Alexander

उत्तर

10

मैं उन्हें प्रोजेक्ट में स्पष्ट रूप से रखूंगा .gitignore। यह सुरुचिपूर्ण नहीं है, लेकिन मुझे लगता है कि आपकी परियोजना में नहीं है जो उनमें से कई हैं।

+3

इस सवाल पर मैंने ठोकर खाई है क्योंकि उनमें से कई * हैं *। –

3

वर्तमान dir से सभी निष्पादन योग्य फ़ाइलों से अपने .gitignore एक में जाने के खिलाफ मतभेद पैदा करने का एक तरीका है:

find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore - 

इस जिसका अर्थ है आप फाइल करने के लिए किसी भी मैन्युअल परिवर्तन खोना नहीं है एक diff उत्पन्न करता है। यह मानता है कि आपकी .gitignore फ़ाइल पहले से ही क्रमबद्ध है। Sed part केवल उत्पन्न ./ को स्ट्रिप्स करता है जो उत्पन्न करता है।

केवल निष्पादन योग्य फ़ाइलों को अनदेखा करने का कोई स्वचालित तरीका नहीं है, इसलिए आपको हमेशा फ़ाइल को प्रबंधित करना होगा।

26

क्या आप सभी को अनदेखा कर सकते हैं, लेकिन स्रोत कोड फाइलें?

उदाहरण के लिए:

* 
!*.c 
!Makefile 
3

मैं अपने आप .gitignore को ELF निष्पादनयोग्य को जोड़ने के लिए एक पटकथा लिखी।

git-ignore-elf:

#!/bin/sh 
set -eu 
cd "$(git rev-parse --show-toplevel)" 
file=.gitignore 
new=$file.new.$$ 
(
if [ -e "$file" ]; then 
    cat "$file" 
fi 
find . -name .git -prune -o -type f ! -name '*.o' ! -name '*.so' \ 
    -print0 | xargs -0 file | grep ': *ELF ' | sed 's/:.*//' | 
sed 's,^./,,' 
) | perl -ne 'print if !$already{$_}++' >"$new" 
mv "$new" "$file" 

विशेषताएं:

  • (! एक misfeature हो सकता है)
  • ELF फ़ाइलें, को छोड़कर ओ और .so फ़ाइलों पर ध्यान नहीं देता शीर्ष-स्तरीय फ़ोल्डर से देख शुरू होता है जिसे एक सामान्य नियम
  • के साथ अनदेखा किया जा सकता है .gitignore में मौजूदा प्रविष्टियों को डुप्लिकेट किए बिना

यह एकल स्क्रिप्ट संस्करण यहाँ है: http://sam.nipl.net/b/git-ignore-elf-1

यहाँ एक और मॉड्यूलर संस्करण है, जो अन्य लिपियों पर निर्भर करता है (Git-जड़, लगता है-योगिनी, uniqo) एक ही जगह से: http://sam.nipl.net/b/git-ignore-elf

+0

यहां पर पाइथन और फ़ाइल (1) का उपयोग कर एक समान उत्तर है: http://stackoverflow.com/a/19749478/218294 –

4

अधिकांश डेवलपर्स में आमतौर पर build निर्देशिका होती है जो उनकी परियोजना में वास्तविक निर्माण प्रक्रिया होती है। तो, सभी निष्पादन योग्य, .o, .so, .a इत्यादि हैं और यह निर्माण निर्देशिका .gitignore में जोड़ दी गई है।

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