मैं अधिक स्पष्ट रूप से .gitignore
वाक्य रचना को समझने की कोशिश कर रहा हूं , और विशेष रूप से जहां तक https://github.com/github/gitignore gitignores का संबंध है।
मैं देख रहा हूं कि अग्रणी स्लैश का उपयोग .gitignore
फ़ाइल के स्थान के सापेक्ष केवल पथनाम से मेल खाने के लिए किया जाता है ( http://git-scm.com/docs/gitignore से ):
एक प्रमुख स्लैश pathname की शुरुआत से मेल खाता है। उदाहरण के लिए, "/*.c" "cat-file.c" से मेल खाता है, लेकिन "मोज़िला-शा 1 / sha1.c" नहीं।
लेकिन क्या होता है जब मैं अग्रणी स्लैश को हटा देता हूं? जहाँ तक मैंने समझा, दो मामले हैं:
- यदि पैटर्न में स्लैश नहीं है (या इसमें केवल अनुगामी स्लैश है, जिसका अर्थ है कि यह एक निर्देशिका से मेल खाना चाहिए), खोज पूरी निर्देशिका ट्री के अंदर की जाती है। उदाहरण के लिए, पैटर्न
dir/
से मेल खाएगी<root>/dir
,<root>/a/dir
,<root>/a/b/c/.../dir
, आदि, जहां<root>
का स्थान है.gitignore
फ़ाइल। - यदि पैटर्न में एक स्लैश है, जो अनुगामी स्थिति में नहीं है (यह अंतिम वर्ण नहीं है), तो यह केवल
.gitignore
फ़ाइल स्थान के सापेक्ष पथनाम के साथ मेल खाता है ।
इस व्यवहार को जांचने के लिए मैंने ये उदाहरण दिए हैं:
# Directory structure:
<root>
├─ dir/
│ └─ test
├─ src/
│ ├─ dir/
│ │ └─ test
test file is there only because Git does not track empty directories.
पहला परीक्षण:
# .gitignore
dir/
# git status
nothing to commit
इसलिए Git दोनों dir
निर्देशिकाओं को अनदेखा कर रहा है । यह केस नंबर 1 के अनुरूप है: पैटर्न में कोई स्लैश नहीं है (केवल अनुगामी को छोड़कर), इसलिए Git पूरे डायरेक्टरी ट्री को देख रहा है, जो पैटर्न से मेल खाता है सब कुछ अनदेखा कर रहा है।
दूसरा परीक्षण:
# .gitignore
/dir/
# git status
Untracked files:
src/
यहां, Git dir
रूट डायरेक्टरी के नीचे केवल डायरेक्ट्री को अनदेखा कर रहा है, पैटर्न में अग्रणी स्लैश के लिए।
तीसरा परीक्षण:
# .gitignore
dir/*
# git status
Untracked files:
src/
यह केस नंबर 2 के अनुरूप है: पैटर्न में इसके अंदर कुछ स्लैश है, इसलिए इसे रूट डायरेक्टरी से शुरू होने वाला एक मार्गनाम माना जाता है।
अब असली सवाल का समय है। आइए इस gitignore फ़ाइल पर विचार करें : जब वे निर्देशिका को अनदेखा करते हैं downloader/
, उदाहरण के लिए, क्या वे वास्तव downloader
में पूरे निर्देशिका पेड़ में पाए जाने वाले हर एक निर्देशिका को अनदेखा नहीं कर रहे हैं ? यह वही है जो मैंने सोचने के लिए प्रेरित किया है कि मैंने पहले गिट के कामकाज के बारे में क्या देखा था।
तो अगर मैं downloader
इसके अंदर एक निर्देशिका के साथ एक कस्टम मॉड्यूल है, यह अप्रत्याशित रूप से के रूप में अच्छी तरह से Magento की जड़ में एक नियमित रूप से नजरअंदाज कर दिया जाएगा? यह एक थोड़ा सा सवाल है क्योंकि यह वास्तव में पहले से ही मेरे साथ हुआ था, जो बग को खोजने के लिए वास्तव में कठिन था।
तो, Magento में .gitignore
फ़ाइल (जो मैं एक उदाहरण के रूप केवल की चर्चा करते हुए कर रहा हूँ, Btw) तो वे सही ढंग से जड़ से शुरू pathnames के खिलाफ मिलान किया जाता है पैटर्न के एक बहुत, स्लैश होते हैं, लेकिन कुछ मामलों में, जैसे देखते हैं downloader/
या errors/
कि , अगर मैं गलत नहीं हूं, तो संभावित रूप से खतरनाक हैं, और जिसे संभवतः बदल दिया जाना चाहिए /downloader/
और /errors/
।
एक अधिक सामान्य प्रश्न के रूप में, क्या मुझे हमेशा स्लैश वाले पैटर्न के लिए अग्रणी स्लैश का उपयोग करना चाहिए, जिसमें स्लैश (एक अनुगामी को छोड़कर) नहीं है, जब मैं स्पष्ट रूप से रूट से शुरू होने वाले पथनाम का चयन करना चाहता हूं, और स्लैश वाले पैटर्न के लिए इसका उपयोग नहीं करना चाहिए, या मुझे करना चाहिए हमेशा स्पष्टता के लिए अग्रणी स्लैश का उपयोग करें? आपने इस बारे में क्या सोचा?
पढ़ने के लिए धन्यवाद और लंबी पोस्ट के लिए खेद है।