我正在使用heroku开发一个Django应用程序,他们使用git来推送代码。我的问题是他们需要这个文件结构:
heroku_project/
requirements.txt (this a pip requirements file)
procfile (this file tell heroku how to run your app)
django_project (the project itself)
lib
bin
build
lib (these 4 folders belong to my python virtual env)
所以我必须在这个文件夹上初始化我的git所以这意味着有这些额外的文件:
heroku_Project/
.gitignore
.git
根据.gitignore
内的their instructions,应该有以下几行:
bin
build
include
lib
.Python
*.pyc
问题是我想跟踪那些虚拟环境文件夹,因为有时我只安装python用于测试,我稍后会丢弃它们,或者我对它们进行实验性更改,我希望我可以使用git撤消这些更改,我的问题我如何跟踪这些文件夹,所以我需要从.gitignore
中删除它们。问题是我什么时候
git push heroku master
因为这会推送那些文件夹而我们不希望这样,所以我如何有选择地推送文件和目录?或者你会用什么样的工作流来解决这个问题?
由于
答案 0 :(得分:1)
首先,如果你在Heroku中进行积极的开发,那么你可能会死在水中。但是如果你在本地机器上进行开发 - 分支机构可能会帮助你。
我的建议是创建一个单独的分支,用于将代码部署到heroku。在这种情况下,您可以使用主分支进行活动开发,并将这些虚拟环境文件夹保存在那里 - 并且有一个单独的分支(比如“生产”),用于将代码部署到heroku。
每当您准备发布新版本的代码时,您应该切换到生产分支,合并来自master的更改,删除这些虚拟环境文件夹,然后推送到Heroku。实际上,该命令序列看起来像这样。
$ git checkout production
$ git merge master
$ rm -Rf bin build include lib .Python *.pyc
$ git commit -a -m "Cleanup for production."
$ git push heroku production
这似乎是最好的解决方案。您可能想要自己研究一些载体:
.gitignore
文件,如果是这样 - 是否会删除手动删除这些文件的清除过程。希望这有帮助!
答案 1 :(得分:0)
为什么不试试virtualenvwrapper?它将virtualenv与您的开发环境区分开来。 典型的情况是你在一个virtualenv上工作,让我们说“main_env”。
mkvirtualenv main_env
当你需要另一个进行测试时,你可以做到
mkvirtualenv test_env
您可以使用一个命令在workon [name]
之间切换它们。你真的不应该把这些文件保存在git中。他们与项目无关。并且由于virtualenwrapper,您不需要git在这些虚拟环境之间切换。
如果你坚持要保留它们,那么你就不能把它们放在git中。如果您不添加git add
的文件/文件夹,则不会将其发送到服务器。