एक ऐसी परियोजना को कैसे खोलें, जिसके इतिहास में मीडिया का कॉपीराइट हो?


15

मैं एक मुफ्त लाइसेंस के तहत एक ऑडियो फ़िंगरप्रिंटिंग सॉफ्टवेयर परियोजना जारी करना चाहता हूं, लेकिन रिपॉजिटरी में कॉपीराइटेड ऑडियो फाइलें हैं। परीक्षण मामले भी वर्तमान में इन फ़ाइलों का उपयोग करते हैं। मैं अधिकतम संस्करण इतिहास के साथ जनता के लिए कोड कैसे जारी कर सकता हूं लेकिन कॉपीराइट का उल्लंघन किए बिना?

विवरण:

  • कोड को git के अंतर्गत संस्करणित किया गया है। हम रिलीज से पहले इसे वापस एक शाखा में डाल देंगे।
  • 400 एमबी ऑडियो डेटा है। कुछ फाइलें उदाहरण के लिए जेमेडो से मुक्त-लाइसेंस प्राप्त संगीत हैं, अन्य हमारे व्यक्तिगत संग्रह से MP3 हैं।
  • कोई फर्क नहीं पड़ता कि हम क्या दृष्टिकोण लेते हैं, हम हमेशा मूल रेपो की अपरिवर्तनीय प्रतिलिपि रखेंगे, ताकि परियोजना इतिहास को नष्ट न किया जा सके।

मुख्य प्रश्न: सार्वजनिक रिलीज को कैसे संभालें?

  1. गिट रिपॉजिटरी से विचाराधीन फाइलों के सभी इतिहास को मिटा दें और परिवर्तित रिपो को जारी करें। (v64 ने ऐसा करने का एक तरीका बताया ।)
  2. वैकल्पिक रूप से, कोड की वर्तमान स्थिति का एक स्नैपशॉट लें और पूर्व-रिलीज़ कोड का सार्वजनिक इतिहास होने से भी परेशान न हों।

साइड सवाल: पहली बार में हम इस दुविधा से कैसे बच सकते थे, यह देखते हुए कि किसी प्रोजेक्ट के शुरुआती चरणों के लिए कभी-कभी निजी कोड या मीडिया की आवश्यकता होती है?

जवाबों:


13

GitHub में एक पृष्ठ है जिसमें बताया गया है कि किसी फ़ाइल को सभी इतिहास से कैसे निकाला जाए: निकाला जाए संवेदनशील डेटा को निकालें

समय-समय पर उपयोगकर्ता गलती से पासवर्ड या चाबियों जैसे डेटा को जीआईटी रिपॉजिटरी में डाल देते हैं। जबकि आप उपयोग कर सकते हैंgit rm फ़ाइल को हटाने के लिए , यह अभी भी रिपॉजिटरी के इतिहास में होगा। सौभाग्य से, फ़ाइल को संपूर्ण रिपॉजिटरी इतिहास से फ़ाइल को निकालने के लिए काफी सरल बनाता है।

खतरा: एक बार जब कमिट को धक्का दे दिया जाता है, तो आपको डेटा से समझौता करने पर विचार करना चाहिए। यदि आपने कोई पासवर्ड बनाया है, तो उसे बदल दें! यदि आपने कोई कुंजी लगाई है, तो एक नया जनरेट करें।

फ़ाइल को अपने रिपॉजिटरी से शुद्ध करें

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


उस काम के लिए सही उपकरण की तरह दिखता है। मैं अभी भी अनिश्चित हूं कि क्या यह मेरे मामले में सबसे अधिक समझ में आता है बनाम कोडबेस के एक ताजा स्नैपशॉट के साथ शुरू होता है।
अपने मॉड का अच्छी तरह

@phyzome: इतिहास कितना महत्वपूर्ण है, इस पर निर्भर करता है। Expunging filter-branchकमांड के साथ बहुत आसान है --- बस इसे रिपॉजिटरी के क्लोन पर चलाना सुनिश्चित करें क्योंकि यह विनाशकारी है और इसे पूर्ववत नहीं किया जा सकता है।
शार्प

8

साइड सवाल: पहली बार में हम इस दुविधा से कैसे बच सकते थे, यह देखते हुए कि किसी प्रोजेक्ट के शुरुआती चरणों के लिए कभी-कभी निजी कोड या मीडिया की आवश्यकता होती है?

यदि आप बड़ी मीडिया फ़ाइलों (400MB ऑडियो) को ट्रैक करने जा रहे हैं, तो इसे एक अलग रिपॉजिटरी में डालें।

यह दो पक्षियों को एक पत्थर से मारता है:

  1. मुख्य रेपो 400MB छोटा है। (लोग हर बार क्लोन करते समय 400MB मूल्य की सामग्री डाउनलोड नहीं करते हैं।)
  2. मीडिया निजी हो सकता है और उसे अन्य सभी सामानों से अलग रखा जा सकता है। जैसे कि सार्वजनिक भंडार को जारी करने के लिए कोई अतिरिक्त काम करने की आवश्यकता नहीं है।

यदि आप चाहें, तो आप मीडिया रिपॉजिटरी को सबमॉड्यूल बनाकर काम करना अधिक सुविधाजनक बना सकते हैं सार्वजनिक रेपो के (है कि आप को जारी करने की योजना बना रहे हैं)।

इस तरह से आप केवल इसके लिए एक संकेतक रखते हैं, न कि (संवेदनशील) सामग्री स्वयं (विकास के शुरुआती चरणों के लिए)। फिर जब आप रेपो को सार्वजनिक रूप से जारी करने जा रहे हैं, तो बस सबमॉड्यूल संदर्भ को हटा दें, जो 400MB के सामान को फ़िल्टर करने के लिए आपके इतिहास को फिर से लिखने की तुलना में बहुत कम परेशानी वाला है।

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