我有一个django项目,我正在使用git。
我需要为每个分支设置不同的settings.py文件。
我已经测试过将settings.py添加到.gitattributes并使用merge = ours,但它没有用,因为如果它没有任何冲突,Git将正常合并。
此外,添加settings.py到.gitignore不是一个选项,因为如果我在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 :(得分:1)
我更喜欢版本化:
settings.py.tpl
settings.py.branch1
中的branch1
,settings.py.branch2
中的branch2
,...(意思是,没有合并问题:每个值文件保持不变) settings.py
(对于您的工作树是私有的:它永远不会被版本化)该脚本可以通过content filter driver自动调用,这将在结帐时构建正确的配置文件。
.gitattributes
file可以为smudge
文件注册“settings.py.*
”脚本。
(签到时不需要'clean
'脚本)
答案 1 :(得分:0)
这是VonC的解决方案,或者您在settings.py文件中检查它所在的分支并从settings-branchX.py
导入分支特定代码。这个解决方案非常接近VonC,但是你在python中做这个,而不是搞乱git。
您可以从gist获得灵感。