sga*_*a62 7 python git django github django-database
一个伙伴和我正在开发一个Django应用程序,并正在使用git(GitHub).
在我们工作的时候,我们会在我们的网站上制作虚假账户,登录并将内容上传到数据库等等,以便进行测试.这是问题:每次我们在GitHub上合并分支时,我们都会遇到与数据库文件的合并冲突.当然,这是因为我们的数据库文件在存储库中,并且由于我们单独测试,因此文件的本地副本会有不同的发展.
我想要做的是让数据库文件在存储库之外.这样,我们可以合并,并始终保持我们自己的数据库副本运行,独立于其他人的本地副本.
但是,我们的settings.py文件必须相同,因此我们无法指定本地路径(即'Users/sgarza62/Desktop'或'Users/rada/Desktop).这是理想的,但settings.py文件是一个共享文件,因此它在存储库的两个副本中必须相同.
通过以下内容,我们已经能够避免使用本地路径:
## settings.py
from os.path import dirname, join
PROJECT_DIR = dirname(__file__)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': join(PROJECT_DIR, 'foo.db'),
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
Run Code Online (Sandbox Code Playgroud)
什么是理想的,是这样的:
## settings.py
from os.path import dirname, join
PROJECT_DIR = dirname(__file__)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': join('../../../', PROJECT_DIR, 'foo.db'), # this path is outside the repository (ie, 'Users/sgarza62/foo.db')
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
Run Code Online (Sandbox Code Playgroud)
我们如何将数据库文件保存在存储库之外?
首先,您需要从git存储库中删除数据库文件.
git rm <database_file>
Run Code Online (Sandbox Code Playgroud)
要阻止将文件添加到存储库,请在存储库的签出中创建名为".gitignore"的文件,将数据库文件添加到.gitignore,然后将.gitignore添加到存储库.(文件)
为了防止与settings.py冲突,我还将settings.py添加到.gitignore.然后,我创建一个名为"settings.production.py"的文件,其中包含生产服务器的所有设置,并将其添加到存储库.在我的本地结账时,我只需将此文件复制到settings.py并根据需要修改变量.在我的生产服务器上,我为settings.production.py创建了一个符号链接.
ln -s settings.production.py settings.py
Run Code Online (Sandbox Code Playgroud)
警告:
http://example.com/.git是可访问的.| 归档时间: |
|
| 查看次数: |
4093 次 |
| 最近记录: |