I have a django project and I'm using git.
I need to have different settings.py file, for each branch.
I've tested add settings.py to .gitattributes with merge=ours, but it not worked because if it's not having any conflict Git will merge normally.
Also, add settings.py to .gitignore is not an option, cause if I change something in the settings.py, I want it pushed to the same branch.
Is there a way to ignore a file when merging but still push it?
UPDATE:
I've tried VonC's solution and I've created two settings: settings_production.py and settings_development.py.
So, I pip installed gitpython and used it in my settings.py, like this:
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 *
And it worked fine.
I prefer having versioned:
settings.py.tpl
settings.py.branch1
in branch1
, settings.py.branch2
in branch2
, ... (meaning, no merge issue ever: each value file remains untouched)settings.py
(which is private to your working tree: it is never versioned)That script can be automatically called through a content filter driver which will, on checkout, build the right config file.
A .gitattributes
file can register that 'smudge
' script for the settings.py.*
files.
(no need for a 'clean
' script on checkin)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With