2011-11-06 39 views
0

我正在使用heroku來開發一個Django應用程序,他們使用git來推動代碼。我的問題是,他們需要這個文件結構:如何推送到遠程只有一些目錄或文件?在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 

根據their instructions.gitignore應該有這些行:

bin 
build 
include 
lib 
.Python 
*.pyc 

問題是我想跟蹤這些虛擬env文件夾,因爲有時我只安裝python for t以後我會放棄它們,或者我對它們進行實驗性更改,希望能夠使用git撤消這些更改,我的問題是如何跟蹤這些文件夾,因此我需要將它們從.gitignore中刪除。問題是,當我做

git push heroku master 

由於這將推動這些文件夾,我們不希望出現這種情況,所以我怎麼能有選擇地推動文件和目錄?或者你會用什麼樣的工作流程來解決這個問題?

謝謝

回答

1

首先,如果你在Heroku積極開發,那麼你可能死在水中。但是,如果你在本地機器上進行開發 - 分支機構可能會幫助你。

我給你的建議是創建一個單獨的分支來部署代碼到heroku。在這種情況下,您可以使用主分支進行主動開發,並將這些虛擬環境文件夾保留在那裏 - 並將代碼部署到heroku中有一個單獨的分支(例如「生產」)。

無論何時您準備發佈新版本的代碼,您應該切換到生產分支,合併來自主服務器的更改,刪除這些虛擬環境文件夾,然後推送到Heroku。實際上,該命令序列看起來像這樣。

這看起來好像是最好的工作解決方案。您可能需要自行研究的某些向量:

  • 通過shell腳本和git鉤子自動執行刪除文件的過程的方法。
  • 爲了確保Heroku可以使用「master」以外的分支來運行代碼(我認爲它應該可以)。
  • 查看是否可以在不同的分支中使用不同的.gitignore文件,如果是這樣 - 是否會刪除手動刪除這些文件的清理過程。

希望這有助於!

+0

感謝您的回答,是的,我在做本地開發。我擔心這會改變工作流程,但我認爲我可以使用結構或shell腳本自動執行此操作。 –

0

你爲什麼不試試virtualenvwrapper?它將virtualenv從開發環境中分離出來。 典型的場景是你在一個virtualenv上工作,比方說「main_env」。

mkvirtualenv main_env 

而當你需要另外一個測試,你可以做

mkvirtualenv test_env 

,你可以使用一個命令在兩者之間切換:workon [name]。你真的不應該把這些文件保存在git中。他們根本與項目無關。並且感謝virtualenwrapper,你不需要git在這些虛擬環境之間切換。

如果你堅持保留它們,那麼你可以簡單地將它們放在git中。如果您不添加文件/文件夾與git add,它不會被髮送到服務器。

+0

我想到了它,但我有這樣的噩夢雜耍的virtualenv,vim和ipython的Python路徑,我想避免使用不同的virtualenv搞亂它。 –

+0

那麼,那麼顯然是錯的:)設置virtualenvwrapper是非常非常簡單並且詳細解釋的(只需查看安裝說明並親自查看)。如果你安裝了ipython,那麼運行'manage.py shell'會啓動django-configured ipython shell。它只是工作。 –