git क्या यह गिट, मर्क्यूरिअल, और बाज़ार के लिए फाइल को अनदेखा करने के लिए सुरक्षित है?




mercurial dvcs (2)

Git, Mercurial, और Bazaar सभी को उनकी अनदेखी फ़ाइल ( .hgignore , .bzrignore , .bzrignore [भी bzr पैटर्न देखें ] के लिए समान स्वरूप हैं।

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

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

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


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


अनदेखी फ़ाइलों में प्रयुक्त सिंटैक्स सिस्टम से सिस्टम में भिन्न है:

  • उच्छृंखल: नियमित अभिव्यक्ति की सूची - एक syntax: glob साथ बदला जा सकता है syntax: glob लाइन।

  • बाजार: शेल ग्लोब पैटर्नों की सूची - RE: साथ उपसर्ग 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 नामक एक फ़ाइल की अनदेखी करेंगे syntax: glob , लेकिन जब तक आप उस अजीब नाम के साथ एक फाइल बनाने की योजना नहीं करते, यह कोई फर्क नहीं पड़ता। अंत में, ध्यान रखें कि Mercurial डिफ़ॉल्ट रूप से $HOME/.hgignore फ़ाइल नहीं पढ़ता है। लेकिन आप इसे जोड़कर इसे पढ़ सकते हैं

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

आपके $HOME/.hgrc फ़ाइल में







ignore