2017-03-08 42 views
0

我有一個小型的開源C++項目,使用Mercurial在Bitbucket上託管。 現在,我正在開發一個新功能,它增加了一些新的文件和新的構建目標;否則它不會更改現有文件。使用Mercurial的公共項目的私人附件

我已經打開了一個新的分支,但是當我將它推到主庫時,我被告知我無法打開新功能..所以我關閉了倉庫並開始尋找解決方案。我有兩個問題:

  1. 對於這種情況會有什麼好的方法?我需要一些能夠讓我同步公共和私人回購之間的通用代碼的修復。我不介意只在本地使用私人代碼。我發現了兩件事:

    • 使用專用舞臺作爲新分支;但我不知道如何得到修復我在祕密分支到共同文件到打開回購

    • 使用subrepos;這將需要一些代碼重組,但可能更清潔..它只是困擾我,這是在文檔中標記爲「最後手段功能」。

  2. 我該如何解決已經將已關閉的代碼推到回購庫的情況?它有助於剝離分支並推送,還是我需要從Bitbucket中刪除回購並創建一個新回購?

+0

至於同步:聽起來好像這就是合併是......很難真正進入細節,而無需任何真正的細節:) 作爲一個方面說明:如果它確實是一個開源項目,您可以在沒有問題的情況下進行分支,沒有人有權要求您不要這樣做,並公開分享您的工作(如果您遵循許可證;有時名字是品牌,你可能需要重新命名的東西)。 – planetmaker

+0

@planetmaker:我不需要分叉,因爲我是該項目的唯一開發者。我保持開源,所以其他人(主要是學生)可以在他們的代碼中使用它。 –

+0

@planetmaker:至於合併,我不知道如何合併來自私人分支的提交,如果它們包含對公共和私人文件的更改 - 是否將私人文件複製到公共回購? –

回答

1

由於我很高興與只具有局部的私有分支,我也做了以下內容:

  • 我剝去到位桶回購的私人分支,以及我的地方是回購的副本。

  • 在我的私人回購副本中,我將公共的更改合併到私人分支,然後將在私人分支中更改的任何公共文件複製到公共的分支中。

  • 然後,我將整個私人分支標記爲「祕密」,以保持它的本地。

對於今後的工作,我打算用hg merge從公衆移動變爲私有分支和hg graft的方向相反。

據我所看到的,這應該工作...