2016-11-01 154 views
0

我被困住了2天試圖設置一個小的自動部署腳本。 問題是:我已經使用Git幾個月了,但我總是在本地使用它,只是爲了輕鬆保存我的代碼版本。一切都好,直到這裏。Git推送部署post-receive python腳本不能設置env var

現在,我必須找到一種方法,在新功能實現後「發佈」代碼,並且我認爲代碼足夠穩定。 搜索周圍我發現了這些'鉤子',它們是在某些情況下由Git執行的腳本。基本上,我的想法是讓我的主分支與我發佈的代碼同步,這樣每次我將分支合併到主服務器並「推送」時,這些文件都會自動複製到「/ my/published /文件夾中」。

也就是說,我找到了this tutorial,它解釋瞭如何使用用Ruby編寫的'hooks'post-receive腳本完成我想要的操作。由於在我的工作室我沒有,現在也不想使用Ruby,所以我找到了一個Python version的腳本。 我經過測試和測試,但我無法完成工作。我不斷收到相同的錯誤:

remote: GIT_WORK_TREE is not recognized as as internal or external command, 

請考慮這是基於我上面分享的教程。相同的prj名稱,相同的結構等 我甚至在我的個人筆記本電腦上安裝了Ruby,並嘗試了原始腳本,但它仍然不起作用...

我使用的是Windows,而Git env變量是設置和訪問。但似乎它不認識GIT_WORK_TREE命令。如果我從Git Bash運行它,它工作得很好,但是如果我使用Windows Shell,則會得到相同的錯誤消息。 我想,當我在py腳本中使用call()函數時,它使用Windows Shell運行cmd。這是我的猜測,但我不知道如何解決它。谷歌沒有幫助,好像以前從來沒有人遇到過這個問題。 也許我只是在這裏看不到明顯的東西,但我花了整整一天的時間,我無法擺脫這個沼澤!

有誰知道如何解決它,或者至少有一個解決方法的想法?

希望有人能幫助... 非常感謝!

+0

的可能的複製['GIT中未被識別爲一個內部或外部的命令(http://stackoverflow.com/questions/4492979/git-is-not-recognized作爲一個內部或外部命令) – user6035379

+0

http://stackoverflow.com/questions/15449428/does-the-shell-in-shell-true-in-subprocess-means-bash建議使用'可執行參數。我沒有洞察到這是否實際上在Windows上工作。如果是這樣,也許將其標記爲該問題的重複。 – tripleee

+0

目前尚不清楚您的環境是什麼 - 您將在哪裏部署?到本地文件夾或其他服務器?你有遠程存儲庫嗎?如果不是 - 什麼意思是「推」? – Ivan

回答

0

你所談論的Ruby腳本生成「打擊」的命令:

GIT_WORK_TREE=/deploy/path git checkout -f ... 

這意味着:定義環境變量「GIT_WORK_TREE」與價值「/部署/路徑」,並執行「混帳結賬-f .. 「。 據我所知,它不適用於Windows命令行。 嘗試使用類似:

set GIT_WORK_TREE=c:\temp\deploy && git checkout -f ...