2010-09-01 101 views
13

我有一個客戶端的Dj​​ango項目,我在本地開發,使用Mercurial進行版本控制。我將本地存儲庫推送到我的個人遠程服務器(我保留了所有項目),然後當我部署它時(無論哪個Web服務器),我都從我的個人服務器上克隆那個存儲庫。如何將Mercurial存儲庫克隆到已存在的目錄中?

這對大多數服務器(我有完全控制)正常工作,但我有幾個項目,我部署到WebFaction。 WebFaction非常棒,但它的設置有點不尋常,因爲我需要首先通過控制面板將Django項目聲明爲「應用程序」。這會自動創建一些內容,如'apache2','myproject'等文件夾。這是同一個文件夾,雖然我想從我的個人遠程服務器克隆存儲庫。執行通常的hg clone命令並不能正常工作,因爲它說目標文件夾已經存在。關於這個文件夾的內容真的沒什麼我可以做的,所以我需要解決這個問題。

我不是Mercurial的專家,我似乎可以解決這個問題的唯一方法是將其克隆到另一個文件夾,然後將所有內容(包括.hg)移動到我想要的實際文件夾中。這似乎很愚蠢,雖然...

我正在使用Mercurial v1.6.2(通過easy_install安裝)。任何人都可以分享一些這樣的燈光?

非常感謝。

+0

你不是唯一一個碰到過這個功能的人:http://mercurial.selenic.com/bts/issue1462 – msw 2010-09-01 21:53:27

回答

1

主要看起來您可能會嘗試使用Mercurial作爲安裝管理器,這當然不是其設計目標。

如果我正確地閱讀了你,你的部分源代碼庫應該是類似於make deploy這樣的文件將它們放到適當的位置。換句話說,在你的部署目錄中擁有一個存儲庫克隆(在.hg)似乎很奇怪並且容易出錯。

+1

其實,很多人都這樣做,它的效果非常好。通常情況下,我們會向具有'changegroupq鉤子'的生產服務器'push',它會自動執行'update'。在堆棧溢出中有很多問題,推薦使用這種設置。使用'生產'標籤或類似的東西作爲自動更新的目標非常靈活。 – 2010-09-02 10:53:57

+0

@ Ry4an:這裏至少有一個反駁論點,它提出了我關心的相同問題。這不是「正確的」,但它是我搜索出現的唯一相關的一個,我很樂意看到另一方的代表。如果你使用的是一個提交鉤子,那麼它似乎必須有一個隱含的「安裝」腳本,它只是由hg觸發的。我從來沒有做過直接部署,所以我想知道我錯過了什麼「船」。 http://stackoverflow.com/questions/2361708/using-hg-repository-as-web-site – msw 2010-09-02 11:35:20

+0

再次看我的項目後,我必須同意msw。我在這裏過於複雜的事情,似乎我應該只是版本控制我的實際Django項目文件夾,而不是它的東西。在這種情況下,這是有道理的。謝謝。 – littlejim84 2010-09-03 22:11:26

10

您只能複製.hg文件夾,然後恢復或更新爲提示。例如:

cp -a src/.hg dest/ 
cd dest 
hg up -C 
1

你可以在事實之後移動文件夾,或者你可以只是建立一個符號鏈接。我的webfaction目錄實際上是符號鏈接的,所以我知道它工作正常。

21

只複製.hg目錄可以正常工作,但你也可以做一個hg init然後hg pull http://remote/repo。剛剛初始化的回購僅有000000000000000變更集,因此您可以從任何回購中撤回,而不會收到「無關回購」警告。這與使用手動初始化的hg clone --pull基本相同。

+2

謝謝!你教我一個非常好的hg提示:-) +1 – 2015-03-10 14:51:03

+0

我不得不在'拉昇後'更新hg。我用一個特定的修訂版「-r X」來拉 – juanmirocks 2016-08-15 08:11:03

相關問題