git हार्ड लिंक - क्या यह पता है कि एक फाइल एक हार्ड लिंक है?


16

मैंने फ़ाइलों को व्यवस्थित करने के लिए प्रतीकात्मक लिंक के बजाय हार्ड लिंक का उपयोग करना शुरू कर दिया ...

मैं उन चित्रों के लिए कर रहा हूं जिन्हें मैं उन्हें वर्गीकृत करने के लिए लेता हूं और साथ ही संकेत करता हूं कि मैं किन चीजों को प्रिंट करना चाहता हूं, आदि।

मैं अपनी छवियों का बैकअप लेने के लिए git का उपयोग कर रहा हूं और ऐसा प्रतीत होता है कि git ने सोचा कि वे नई फाइलें हैं क्योंकि रिपोजिटरी आकार में लगभग 1GB बढ़ी। अगर मैं फ़ाइल का नाम बदलने के लिए गिट का उपयोग नहीं करता हूं, तो क्या यह वास्तव में अच्छी तरह से पता लगाता है, लेकिन क्या यह हार्ड लिंक भी संभालता है?

वाल्टर


2
सभी सामान्य फाइलें हार्ड लिंक हैं। शायद आपका मतलब था "कई हार्ड लिंक वाली फाइलें"?
इग्नासियो वाज़क्वेज़-अब्राम्स

हां, मेरा यही मतलब है।
वाल्टर

1
अगर मैं गलत हूं तो मुझे सुधारो, लेकिन अधिक ट्रैक नहीं है content? यदि फ़ाइलों की सामग्री समान है, तो यह क्यों मायने रखता है - आखिरकार, वे तकनीकी रूप से एक ही फ़ाइल हैं।
new123456

1
जो लोग इस पर ठोकर खाते हैं - शायद इसके बजाय प्रतीकात्मक लिंक का उपयोग करने पर विचार करते हैं? stackoverflow.com/q/954560/492
सीएडी

ऐसा लगता है कि आप एक टैग-आधारित फ़ाइल सिस्टम चाहते हैं।
नायुकी

जवाबों:


14

मल्टीप्ल लिंक्ड ट्रैक्ड फाइल्स के कारण Git का ऑब्जेक्ट स्टोर ज्यादा विकसित नहीं होगा क्योंकि प्रत्येक लिंक को उसी समान ब्लॉब ऑब्जेक्ट द्वारा दर्शाया जाएगा। हालाँकि, आपका काम करने वाला पेड़ टूटी कड़ियों के कारण बढ़ता जा रहा है।

Git ट्रैक नहीं करता है कि क्या ट्रैक किया गया है, काम करने वाली ट्री फाइलें एक ही फाइल की हार्ड लिंक हैं।

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

अपनी बहु-लिंक्ड स्थिति को पुनर्प्राप्त करने के लिए, आप समरूप फ़ाइलों के लिए स्कैन करने और उन्हें किसी भी एक फ़ाइल में relink करने के लिए एक प्रोग्राम लिख सकते हैं। ऐसा "रिलिंक" ऑपरेशन अधिक जटिल हो सकता है यदि सभी लिंक कार्यशील पेड़ में ही नहीं हैं या कम से कम, कुछ आसानी से पहचाने जाने योग्य "बाहरी" स्थान पर नहीं हैं (यानी लिंक को पुनर्प्राप्त करना मुश्किल होगा, यदि आप लिंक कर रहे हैं "बैकअप" रिपॉजिटरी और वर्किंग ट्री को संशोधित करने के लिए Git का उपयोग करके अपने घर की निर्देशिका से "यादृच्छिक" फाइलें।

यह विचार जीआईटी मेलिंग सूची पर आया है:


डेबियन-आधारित Linuxes के लिए, वहाँ hardlink उपकरण (है packages.debian.org/search?keywords=hardlink ) जो इस रीलिंक आपरेशन करने के लिए सक्षम है। दुर्भाग्य से, यह बहुत तेज़ नहीं है
डैनियल एल्डर

मैं hardlinkएक रात की नौकरी के रूप में चलाता हूं /var/lib/jenkins
एमी वैन गैससे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.