2012-02-06 27 views
1

最近我開始通過將所有文件複製到一個新目錄來開發一個「便攜」版本的項目。便攜式目錄與穩定目錄的區別僅在於刪除或註釋的內容;沒有添加任何東西。Mercurial新手:兩個預先存在的代碼庫可以同步嗎?

我終於決定是時候學習源代碼管理了。每個人都說開始比任何事情都重要,而且我最終選擇了Mercurial,因爲它對分支很好,而且(更重要的)我喜歡我在網上找到的教程(例如,http://hginit.comhttp://hgbook.red-bean.com/)。

我爲我的穩定目錄和中央存儲庫(Dropbox)中的一個克隆做了一個存儲庫。我正在提交,推送等。但是,現在我想將我的(已存在的)可移植目錄與中央存儲庫相關聯。我希望能夠在我的穩定代碼中修復一個bug,將它推送到中央倉庫,然後將錯誤修復程序拖入便攜版本中 - 而無需更改便攜代碼中的其他任何內容。

我不確定先用可移植代碼做什麼。如果我將中央repo克隆到便攜式目錄,那麼當我第一次更新便攜式目錄時,是否會覆蓋所有便攜式代碼?

+3

請注意在回收箱中保留回購。這並不安全。 Dropbox以自己的方式同步文件,而且Mercurial具有非常具體的,經過充分測試的鎖定語義,可以考慮硬鏈接,網絡文件系統和事務回滾。 Mercurial的推和拉是從一臺機器到另一臺機器進行更改的方式 - 而不是文件同步。 – 2012-02-07 01:49:01

+2

請注意Ry4an的評論,這是一個非常危險的地方,以保持您的中央存儲庫。由於Mercurial負責共享和版本控制,因此應該不需要Dropbox。 – 2012-02-07 10:08:14

回答

1

您需要將「中央」存儲庫克隆到便攜式目錄中,然後才能執行像您所描述的任何工作。但是,一個簡單的解決方法是將您的便攜式目錄複製到其他地方並創建一個新的空文件夾。然後,將您的資源庫克隆到該目錄中。之後,您應該可以將您以前的便攜式目錄複製並粘貼到克隆版本中,並允許其覆蓋那裏的文件。這將允許您將這些更改提交到版本控制並與中央存儲庫同步。

如果此方法不起作用,您仍然需要克隆中央存儲庫,然後手動將所有「待處理」更改手動更改爲新的克隆版本。

1

聽起來像便攜式版本應該是你的穩定回購中的一個分支。既然你已經有了一個不在版本庫中的現有版本,我認爲easiset的方法是使用addremove命令。

我要做的是首先確保您的穩定分支有任何近期更改,並確保在某處出現任何錯誤時您的備份副本存放在某處。然後,我將刪除穩定存儲庫目錄中除.hg目錄以及任何其他存儲庫管理文件(例如.hgignore,.hgsub,.hgeol等)以外的所有內容。然後,將便攜版本複製到該目錄中並運行hg addremoveaddremove命令將自動添加所有新文件並刪除所有丟失的文件(在這種情況下應刪除)。現在我將其標記爲hg branch <branch_name>的單獨分支,其中<branch_name>是您想命名便攜式分支的任何內容。然後像往常一樣hg commit

現在您已經擁有了穩定的分支(稱爲「默認」,除非您已將其重命名)以及新的便攜式分支。現在,當您對穩定分支進行更改時,您可以將hg update添加到便攜式分支中,並運行hg merge default(或將默認值替換爲穩定分支的名稱),將這些更改合併到便攜式分支中。

相關問題