2010-09-16 8 views
8

कोड (पूरे प्रोजेक्ट इतिहास) को आज एक और देव दुकान में स्थानांतरित करना था और यह सोच रहा था कि क्या हमारी टीम सहयोग के लिए उपयोग की जाने वाली नंगे गिट रिपोजिटरी को ज़िपुप करना अच्छा विचार है और इसे केवल वर्बैटिम भेज दें?क्या यह नंगे 'गिट' भंडारों को ज़िपअप करना सुरक्षित है और इसे अन्य लोगों को सौंपना सुरक्षित है?

क्या ऐसा करना सुरक्षित है?
क्या कोई संवेदनशील डेटा किसी .git फ़ोल्डर में संग्रहीत है?

उत्तर

11

आप के बजाय clone या bundle का उपयोग कर तो आप भी उन्हें अपने .git/hooks निर्देशिका दे रही हो जाएगा .git/config फ़ाइल और कुछ अन्य अनुकूलन फ़ाइलों के ऐसा करते हैं तो। उन फ़ाइलों के लिए कोई संवेदनशील डेटा नहीं होना आम बात नहीं है (आपको पता चलेगा क्योंकि आप इसे मैन्युअल रूप से वहां रखेंगे) लेकिन उनमें व्यक्तिगत सेटिंग्स हो सकती हैं। उदाहरण के लिए, आपने .git/config में user.name और user.email कॉन्फ़िगरेशन सेटिंग्स सेट की हो सकती हैं। यह संभव है कि आपने कुछ हुक स्क्रिप्ट लिखी हो (.git/hooks/* में) जिसमें पासवर्ड हो सकते हैं - लेकिन, जैसे मैंने कहा, आप शायद पहले से ही इसके बारे में जानते होंगे।

लेकिन, गिट आपके किसी भी पासवर्ड या किसी अन्य गुप्त/संवेदनशील डेटा को स्टोर नहीं करता है।

+2

सही! '.git/config' फ़ाइल संवेदनशील हो सकती है। +1 – VonC

4

एक समान समाधान git bundle होगा।

Backup of github repo या Backup a Local Git Repository और देखें।

.git (या तो बंडल या संकुचित) सभी इतिहास और फ़ाइलें आप इसे में डाल को छोड़कर किसी भी संवेदनशील डेटा शामिल नहीं होंगे।
git - remove file from the repository देखें उदाहरण के लिए संवेदनशील डेटा को हटाने के लिए।

Pat Notzhis answer में उल्लेख किया गया है, एक संपीड़ित .git में आपके .git/config शामिल होंगे।
मुझे एहसास है कि मेरे कुछ रिमोट रेपो पते हैं जहां मुझे वास्तव में काम करने के लिए [email protected] रखना पड़ा। तो आपको किसी भी स्थानीय मेटाडेटा (जैसे .git/config) शामिल नहीं करना चाहिए क्योंकि वे ... स्थानीय हैं।

7

अपनी .git निर्देशिका में एक नज़र डालें। बहुत सारी फाइलें हो सकती हैं लेकिन वे नियमित समूहों की एक छोटी संख्या में आती हैं (ऑब्जेक्ट स्टोर डेटा, रेफरी, रीफ्लॉग इत्यादि)। आप सामग्रियों को दो प्रमुख श्रेणियों में विभाजित कर सकते हैं: डेटा जो गिट आम ​​तौर पर अन्य भंडारों और डेटा को ले जा सकता है कि गिट आमतौर पर अन्य भंडारों में परिवहन नहीं करेगा।

सामान्य रूप से ले जाया नहीं:

  • HEAD, FETCH_HEAD, ORIG_HEAD, MERGE_HEAD
  • config
  • description
  • hooks/
  • index
  • info/ - विविध
  • logs/ - reflogs

आम तौर पर ले जाया (जैसेक्लोन के माध्यम से,, को हासिल करेगा धक्का, और बंडलों):

  • objects/
  • packed-refs
  • refs/

यह पिछले समूह वस्तु की दुकान और अपनी प्रकाशित प्रवेश द्वारों का निर्माण करता है। आपको स्पष्ट रूप से संस्करणित सामग्री की समीक्षा करना होगा ताकि यह निर्धारित किया जा सके कि इसमें कुछ संवेदनशील है या नहीं।

सिर, index (एक नंगे भंडार में मौजूद नहीं है), और reflogs (logs/) वस्तु की दुकान में सभी अतिरिक्त प्रवेश द्वारों हैं। यदि आपने कोई इतिहास पुनर्लेखन किया है (उदाहरण के लिए आपने हाल ही में रिकॉर्ड किए गए इतिहास से कुछ संवेदनशील कॉन्फ़िगरेशन फ़ाइल को हटा दिया है) तो आप रीफ्लॉग पर अधिक ध्यान देना चाहेंगे (संभवतः अधिकांश नंगे भंडारों पर सक्षम नहीं) और रेफरी के रेफ/मूल/भाग नाम स्थान।

FETCH_HEAD और config संबंधित गिट भंडारों के पते हो सकते हैं।

config में अन्य संवेदनशील जानकारी हो सकती है।

info/ में विभिन्न जानकारी है; इनमें से कुछ संवेदनशील हो सकते हैं (जानकारी/वैकल्पिक); कुछ संवेदनशील होने की संभावना कम होती है (माना जाता है कि सामग्री स्वयं "साफ" है- इंफो/रेफ, जानकारी/पैक); कुछ भंडार (जानकारी/grafts) के संचालन के लिए महत्वपूर्ण हो सकता है। आप जिस भी एड-ऑन टूल्स का उपयोग कर रहे थे (हुक स्क्रिप्ट्स, वेब इंटरफेस इत्यादि) यहां डेटा संग्रहित कर सकते हैं; इनमें से कुछ संवेदनशील हो सकते हैं (एक्सेस कंट्रोल सूचियां, आदि)।

अगर वहाँ hooks/ में कुछ भी सक्रिय हैं, आप का मूल्यांकन करने के लिए कि क्या यह भंडार की प्रति के साथ प्रदान की जानी चाहिए (यह भी जांच करेगा कि क्या यह भंडार में कहीं भी किसी भी अतिरिक्त डेटा संग्रहीत करता है) चाहते हैं।

description फ़ाइल शायद अहानिकर है, लेकिन क्या आप इसे भी जाँच कर सकते हैं।


आप केवल सामग्री सौंपने रहे हैं, तो आप शायद सिर्फ एक ताजा नंगे भंडार को क्लोन या एक बंडल (git bundleVonC describes के रूप में) का उपयोग करना चाहिए।

आप आप इसे प्रबंधित करने के लिए सामग्री के साथ ही प्रक्रिया सौंपने के लिए जिम्मेदार हैं, तो आप व्यक्तिगत रूप से भंडार में से प्रत्येक बिट की जांच के लिए होगा।


सामान्य (या एक अधिक "पागल" फैशन में) में, वहाँ एक Git भंडार के पदानुक्रम के अंदर कई स्थानों पर जहां किसी को किसी भी यादृच्छिक फ़ाइल की दुकान कर सकते हैं। यदि आप यह सुनिश्चित करना चाहते हैं कि आप केवल गिट की जरूरत वाले डेटा को दे रहे हैं, तो आपको क्लोन या बंडल का उपयोग करना चाहिए। यदि आपको अपने "प्रति भंडार" डेटा (उदाहरण के लिए कुछ हुक रिपोजिटरी का प्रबंधन करने के लिए उपयोग किया जाता है) की आपूर्ति करने की आवश्यकता है तो आपको ताजा नंगे भंडार में क्लोन करना चाहिए (मौजूदा ऑब्जेक्ट स्टोर फ़ाइलों की प्रतिलिपि बनाने और हार्डलिंकिंग से बचने के लिए file: यूआरएल का उपयोग करें) और पुनः स्थापित करें केवल आपके हुकों को पूरा करने के लिए आवश्यक हुक/डेटा।

+0

अच्छा - बहुत अच्छे विवरण। –

+0

सज्जन की तरह कहते हैं, बहुत सारे विवरण। +1 – VonC

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