0

我有一臺服務器設置爲「生產」遠程,它運行post-recieve shell腳本來爲主分支部署「硬」部署站點。或者將開發分支部署到不同目錄的「軟」部署。通過推送到遠程服務器的Git傳遞變量

soft (fast, low resources) - checks out the work-tree to the /dev directory (fast) 

hard (slower, more resources) - check out the work-tree to a new '/temp' directory, 
     copies the non-tracked files from the '/live' directory to '/temp' (can be large) 
     if successful, renames the '/live' directory to '/live-old' 
     renames the '/temp' to '/live' and deletes the older '/live-old' directory 

有時候我只希望做的主分支推「軟」部署,如果它的東西,小小的像修補程序,作爲一個硬一個可能需要一段時間來複制像上傳等非跟蹤文件,似乎浪費服務器資源說,如果爲不同的應用程序做多個修補程序。

我可以從我的本地服務器(如在git配置文件的遠程部分)傳遞一個變量到遠程服務器,告訴它爲主分支進行軟部署還是硬部署?

我在想,如果遠程服務器知道什麼地方的遠程名字是我所能我們,或者如果我可以像遙控器定義一個變量添加到URL:

[remote "production-hard"] 
    url = ssh://project.git?deploy=hard 
    fetch = +refs/heads/*:refs/remotes/production/* 
[remote "production-soft"] 
    url = ssh://project.git?deploy=soft 
    fetch = +refs/heads/*:refs/remotes/production/* 

我敢肯定這種方式可能不起作用,但希望你能明白我想要做什麼。

另外,請說如果這是非常糟糕的做法,我應該使用另一種方法。

謝謝。

回答

0

不,你不能傳遞額外的變量。

但是你可以評估被推送到的分支名稱。

所以,你可以建立一個post-receive hook是檢查的分支被推到:

  • production-hard →做hard部署
  • production-soft →做soft部署
+0

是的,我擔心你會這麼說。如果我可以幫忙的話,我並不想擁有多個分支機構。它不會把Git Flow搞砸嗎? – StuckInSpace

+0

@StuckInSpace:我不是那麼喜歡Git Flow,但是IIRC是一個純粹的本地事物。而且你總是可以推送到不同的(或多個)遠程分支(ES) – eckes