繁体   English   中英

我可以忽略整个分支来创建一个与实时服务器连接的本地分支,并将调试设置为True吗?

[英]Can I git ignore an entire branch to create a local branch that interfaces with live server, with debug set to True.?

我将要开始进行部署,我的实时服务器崩溃时遇到了一些问题,并且我无法将调试设置为True。

我已经知道如何进行设置,但我认为我需要一些帮助。

我有一个本地分支, master和一个带有Django Debug=True的本地数据库。
我将master推送到服务器,那里有一个实时数据库,以及一个.env文件,其中Debug设置为False

现在,我已经设置了一个新的本地分支debug具有Debug=True ,并且可以使用SSH隧道连接到实时数据库。
我要做的只是在Debug设置为True针对实时数据库运行我的代码。 因此,当服务器上发生故障时,只要.env之外的debugmaster有意义地相同,我就能够调试任何错误,而无需在面对Internet的实时实例上发生Debug=TRUE的情况。

我想以各种方式让我的本地debug分支成为master的精确副本,但是它不是通过连接到我的本地数据库,而是通过SSH隧道并使用Debug = True来连接到实时数据库。

问题

我有一个名为.env.gitignore文件,并且我正在运行python decouple
我的.env文件在该.gitignore文件中引用。
实时服务器有一个.env ,本地master分支有一个。

现在,我需要第三个分支来进行debug分支-但是Git不会跟踪它,因此当我切换分支时,它仍然指向我的单个.env文件。
如果我跟踪它,它最终将在存储库中失效,从而失去了去耦的目的。

到目前为止,我已经将环境变量(数据库等)硬编码到我的debug分支的settings.py文件中。

但是我现在该如何前进?
除了settings.py如何通过其他方式debugmaster相同的master 我的.gitignore不是特定于分支的吗?
而且,如何自动保持debugmaster同步?
理想情况下,我将debug同步到master (除settings.py ),然后整个分支永远都不会提交到存储库?

是否有更好的解决方案?

是否有更好的解决方案?

是的,它涉及根据分支保留(对于给定文件,在此处env-dev.txt不同的内容 ,这意味着:

  • 仅对模板文件进行版本控制env.tpl
  • 以分支命名的版本值文件: env.devenv.master :由于它们不同,因此合并或切换分支时没有合并问题。

为此,您可以在子模块存储库中注册(在.gitattributes声明中内容过滤器驱动程序

弄脏 (图片来自“ 自定义Git-Git属性 ”,来自“ Pro Git书 ”)

与模板文件( env.tpl )关联的smudge脚本将通过在正确的env.<branch>值文件中查找值来生成(自动git checkout )实际的env文件。 像您当前所做的那样,生成的实际env文件仍然被忽略( .gitignore )。

请参阅“ 分支之间的git smudge /清洁过滤器 ”中的完整示例。

您的smudge脚本可以使用以下命令确定已检出分支的名称:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

如果您需要分支特定的内容,则同样的想法也适用于settings.py `

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM