2013-06-07 9 views
7

धक्का में शामिल करें मेरे पास एक django प्रोजेक्ट है और मैं गिट का उपयोग कर रहा हूं।विलय करते समय फ़ाइल को अनदेखा करें - लेकिन इसे

प्रत्येक शाखा के लिए मुझे अलग-अलग सेटिंग्स.py फ़ाइल की आवश्यकता है।

मैंने merge = ours के साथ .gitattributes में सेटिंग्स.py जोड़ने का परीक्षण किया है, लेकिन यह काम नहीं किया गया है क्योंकि यदि इसमें कोई संघर्ष नहीं है तो गिट सामान्य रूप से विलय हो जाएगा।

इसके अलावा, .gitignore में सेटिंग.py जोड़ें कोई विकल्प नहीं है, क्योंकि अगर मैं settings.py में कुछ बदलता हूं, तो मैं इसे उसी शाखा में धक्का देना चाहता हूं।

विलय करते समय फ़ाइल को अनदेखा करने का कोई तरीका है लेकिन अभी भी इसे धक्का दे रहा है?

अद्यतन:

मैं VonC के समाधान की कोशिश की है और मैं दो सेटिंग्स बना लिया है: settings_production.py और settings_development.py।

तो, मैं gitpython स्थापित पिप और मेरी settings.py में इसका इस्तेमाल किया, इस तरह:

from git import Repo 
import os 

r = Repo(os.path.realpath(os.path.dirname(__file__))) 
if r.active_branch.__str__(== 'master': 
    from settings_production.py import * 
else: 
    from settings_development.py import * 

और यह ठीक काम किया।

+0

[शाखाकरण: रिलीज/विकास के लिए अलग-अलग कॉन्फ़िगरेशन फ़ाइलें] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/9636492/branching- अलग-config-files-for-release-development) –

उत्तर

1

मैं पसंद संस्करणीकृत था:

  • एक टेम्पलेट फ़ाइल settings.py.tpl
  • शाखा प्रति एक मूल्य फ़ाइल: branch1 में settings.py.branch1, settings.py.branch2branch2 में, ... (जिसका अर्थ है, कभी कोई मर्ज मुद्दा: प्रत्येक मान फ़ाइल अनछुए बनी हुई है)
  • वर्तमान शाखा का पता लगाने में सक्षम एक स्क्रिप्ट, सही मूल्य फ़ाइल ले लो और टेम्पलेट फ़ाइल से अंतिम settings.py (जो आपके काम करने वाले पेड़ के लिए निजी है: यह कभी संस्करण नहीं है)

वह स्क्रिप्ट स्वचालित रूप से content filter driver के माध्यम से बुलाया जा सकता है जो चेकआउट पर, सही कॉन्फ़िगरेशन फ़ाइल का निर्माण करेगा।

smudge

एक .gitattributes filesettings.py.* फ़ाइलों के लिए कि 'smudge' स्क्रिप्ट रजिस्टर कर सकते हैं।

0

(एक 'clean' चेकइन के स्क्रिप्ट के लिए कोई ज़रूरत नहीं) यह या तो VonC के समाधान, या आप अपने settings.py फ़ाइल जिसमें आप आगमन जो शाखा यह एक settings-branchX.py से और आयात शाखा विशिष्ट कोड में है। यह समाधान वॉनसी के बहुत करीब है, लेकिन आप इसे अजगर में कर रहे हैं, और गिट के साथ गड़बड़ नहीं कर रहे हैं।

आपको gist से प्रेरणा मिल सकती है।

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