2011-05-31 31 views
25

在我的資源庫中,我已經爲我使用的模塊添加了幾個子存儲庫。我總是會將這些subrepos視爲「只拉」。我不打算對它們進行任何更改,但如果新版本發佈,我們希望保留輕鬆提取新更改的功能。如何防止mercurial推送subrepos?

當我主推的倉庫,水銀試圖推動子庫。有什麼設置可以防止這種情況發生?

+0

@Mercurial不水銀不會有類似的東西到Git的.gitignore文件? – Arlen 2011-05-31 00:57:44

+0

當然是的,但他說的是subrepos而不是每個文件忽略。 Git具有相同的subrepo內容,並且它同樣不會用.gitignore解決。 – 2011-05-31 02:36:05

+0

我不想忽視subrepos,我根本不希望他們成爲推動的一部分,因爲他們永遠不會改變。 – Soviut 2011-05-31 06:18:00

回答

-1

取決於你使用的善變的客戶端。我使用tortoisehg,我發現右鍵單擊該文件夾並選擇tortoisehg >> forget中的文件即可。選擇文件,你不需要再打擾。

+1

你在考慮忽略文件,但soviut詢問不要推送subrepos。 – 2011-05-31 02:36:33

7

有一些事情可以做,這取決於你在尋找它的行爲。

你實際上是在編輯和subrepo內犯?如果是這樣,您應該創建一個單獨的供應商分支機構回購站,將您的更改與上游(「他們」)的更改合併在一起,並讓您的次要指向。像這樣的事情也許:

repos 
    main 
    subrepo 
    .hgsub # contains: "subrepo=../theirproject" 
    theirproject # clone of remote, upstream repo 

的想法是,在subrepo入口不是直接指向拉只上游回購,而是你自己的,你合併與「他們」

另一個更改選項是停止在subrepo中進行更改。如果沒有更改,並且沒有提交,那麼推送將會通過該回購。如果您切換到該工作模式,則可以在hgrc文件中的[ui]部分中設置commitsubrepos = false以避免意外提交該回購。

的底線是,如果你在那裏,然後改變的事情,你需要提交他們(安全!),如果你提交他們,那麼他們就會被推向如果父推,所以只是控制到他們被推到哪裏,你很好去。

+2

我不以任何方式編輯或更改子回購。這是嚴格意義上的圖書館供我參考。我希望他們保持次回購,這樣我可以更新更新,但我不希望他們經常在沒有任何改變時試圖推動。 – Soviut 2011-05-31 06:16:34

+1

如果你沒有改變subrepos中的任何內容,那麼Mercurial將不會嘗試推送它們。或者說,它會檢測到沒有更改,推送將立即退出。如果你進入這個回購協議並且'hg outgoing'向你顯示任何內容,那麼你已經改變(並提交)了一些東西。你可以用你在父回購中做「hg push」時看到的具體輸出來更新你的問題嗎? – 2011-05-31 21:46:22

+1

只要hg推在父回購。我希望基本上只是防止subrepo檢查,因爲它似乎比正常推動更慢。 – Soviut 2011-06-01 05:24:15

相關問題