2012-03-14 38 views
10

Git, मर्क्युरियल, और बाजार अपने सभी उपेक्षा फ़ाइल के लिए इसी तरह के प्रारूपों है लगता है (.gitignore, .hgignore, .bzrignore [देखना भी bzr patterns])।क्या गिट, मर्कुरियल और बाज़ार के लिए एक ही अनदेखी फ़ाइल का उपयोग करना सुरक्षित है?

वैश्विक अनदेखी फ़ाइलों के सिंक्रनाइज़ेशन को बेहतर बनाने के लिए, क्या एक वास्तविक फ़ाइल के रूप में उपयोग करना सुरक्षित होगा और बस उस फ़ाइल में दूसरे दो को सिंक्रनाइज़ करना होगा? दूसरे शब्दों में, वहाँ बनाने में किसी भी खतरे मेरी $HOME/.gitignore विहित फ़ाइल और कर

ln -s $HOME/.gitignore $HOME/.hgignore 
ln -s $HOME/.gitignore $HOME/.bazaar/ignore 

पर ध्यान नहीं देता या वहाँ उन के बीच में कुछ सूक्ष्म अंतर यह है कि कुछ बिंदु पर मुझे काटो होता है?

उत्तर

13

वाक्य रचना की अनदेखी फ़ाइलों में इस्तेमाल में स्थिति प्रणाली के लिए प्रणाली से अलग है:

  • मर्क्युरियल: नियमित अभिव्यक्ति की सूची - एक syntax: glob लाइन के साथ बदला जा सकता है।

  • बाजार: खोल ग्लोब पैटर्न के सूची - RE: साथ लगाकर रूप में रेगुलर एक्सप्रेशन से मेल करने के लिए।

  • गिट: शैल ग्लोब पैटर्न की सूची।

इसके अलावा, शैल पैटर्न और नियमित अभिव्यक्तियों के मिलान के तरीके के लिए सटीक नियम उपकरण से भिन्न होते हैं। सब कुछ, इसका मतलब यह है कि यदि आप अपनी वैश्विक अनदेखी फ़ाइल बहुत सरल हैं तो आप केवल इस चाल का उपयोग करने की उम्मीद कर सकते हैं। अन्यथा मतभेद आ सकते हैं और आप काट सकते हैं, जैसा कि आप कहते हैं।

मैं इस फ़ाइल के साथ यह परीक्षण किया:

syntax: glob 
.bzr 
.git 
.hg 
*.o 
*~ 

और यह के रूप में सभी तीन उपकरणों भर में उद्देश्य के अनुसार कार्य करने लगता है। यह परीक्षण करने के लिए, मैं इस निर्देशिका वृक्ष बनाया:

$ tree 
. 
|-- foo.c 
|-- foo.c.~1~ 
|-- foo.h 
|-- foo.o 
`-- src 
    |-- bar.c 
    |-- bar.c.~1~ 
    `-- bar.o 

और प्रत्येक उपकरण के लिए स्थिति आदेश भागा:

$ for tool in hg git bzr; do echo "== $tool status =="; $tool status; done 
== hg status == 
? foo.c 
? foo.h 
? src/bar.c 
== git status == 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  foo.c 
#  foo.h 
#  src/ 
nothing added to commit but untracked files present (use "git add" to track) 
== bzr status == 
unknown: 
    foo.c 
    foo.h 
    src/ 

आप देख सकते हैं, इस सरल फ़ाइल ठीक काम करता है।

तकनीकी रूप से, गिट और बाज़ार अब syntax: glob नामक फ़ाइल को अनदेखा कर देगा, लेकिन जब तक कि आप उस अजीब नाम के साथ फ़ाइल बनाने की योजना नहीं बनाते, इससे कोई फर्क नहीं पड़ता। अंत में, ध्यान दें कि Mercurial डिफ़ॉल्ट रूप से $HOME/.hgignore फ़ाइल नहीं पढ़ता है। लेकिन आप इसे

[ui] 
ignore.my-default = ~/.hgignore 

को $HOME/.hgrc फ़ाइल में जोड़कर इसे पढ़ सकते हैं।

+0

Mercurial में आप इसे 'ग्लोब:' के साथ उपसर्ग करके ग्लोब में एक पंक्ति भी बदल सकते हैं। –

+0

@LaurensHolst: ठीक है, लेकिन यहां मैं चाहता था कि Mercurial निम्नलिखित पैटर्न को ग्लोब पैटर्न के रूप में मानें क्योंकि यह गिट और बाज़ार के लिए डिफ़ॉल्ट है। –

+0

बस पूरा होने की टिप्पणी :)। –

1

कम से कम गिट और मर्कुरियल का सिंटेक्स भिन्न होता है (ग्लोब और regex एचजी में पैटर्न), एचजी में भी फाइलें मत भूलना! BzR