在這個從2015年開始的F8 conference video(從8:40開始)中,他們談到了在Facebook上使用Mercurial和單個存儲庫的優點。Mercurial sparse checkout
這是如何工作的?使用Mercurial,我可以檢出一個子目錄(住在SVN中)嗎?如果是這樣,怎麼樣?我需要一個facebook-mercurial-extension這個
P.S:我只對SO發現像2010 this或this答案哪裏我不知道,如果答案仍與所有的努力申請FB把它付諸表決。
在這個從2015年開始的F8 conference video(從8:40開始)中,他們談到了在Facebook上使用Mercurial和單個存儲庫的優點。Mercurial sparse checkout
這是如何工作的?使用Mercurial,我可以檢出一個子目錄(住在SVN中)嗎?如果是這樣,怎麼樣?我需要一個facebook-mercurial-extension這個
P.S:我只對SO發現像2010 this或this答案哪裏我不知道,如果答案仍與所有的努力申請FB把它付諸表決。
從你的問題來看,如果你正在尋找一個工作流程(monorepo vs multiple repos辯論),或者爲了代碼庫的性能和縮放而不清楚。
對於工作流程,我建議使用google搜索monorepo
。它有其優點和缺點,你需要了解你的情況和目前的工作流程來決定。爲了表現和縮放,請繼續閱讀。
remotefilelog
的想法是不簽出一個子目錄(如你所說),這個想法是檢查一切。爲了有效地做到這一點,你需要Facebook積極開發的兩個擴展:
hg clone
和hg pull
時間。hgwatchman
,它現在是mercurial core的一部分)。這大大縮短了本地操作的時間,如hg status
。請注意,fsmonitor
獨立於remotefilelog
。您可以開始試驗這個,因爲它不需要在服務器端進行任何設置。隨着近來善變(我強烈建議),你可以剃掉使用CommandServer + CHg Python解釋器的額外的啓動時間。
一些其他注意事項:
fsmonitor
測試。它工作得很好,在巨大的回購時間hg status
從10秒減少到不到1秒(並且這1秒的大部分時間是Python啓動時間,參見上面的CHg
)。如果您的存儲庫真的很大,您可能需要微調一些inotify內核參數(或MacOSX上的等效參數)。 fsmonitor
文檔包含您需要的所有信息。remotefilelog
,雖然我看了一切,我發現它,我相信它的工作原理。取決於開發的方式(每個人總是互聯網連接與否,組織有它自己的主倉庫回購),可能會有一個警告:它將分散的hg
部分轉換爲集中的VCS,如svn
:通常可以進行的一些操作離線完成(例如:hg log
和第一個hg update
到過去的變更集)現在需要連接到主存儲庫。remotefilelog
之前,我在廣泛的回購庫上廣泛使用了largefiles
擴展。它具有與remotefilelog
相同的缺點,對於想要使用hg
只是爲了完成任務而不花時間瞭解其工作原理的用戶,一些令人困惑的角落案例。如果我要管理另一個巨大的回購,我會使用remotefilelog
而不是largefiles
,儘管它們的用例並不相同。subrepositories
(doc1,doc2)。問題是它根據你在源碼樹中的位置來改變hg的行爲。再說一遍,如果開發者不關心真正理解hg是如何工作的,那就太令人困惑了。其他信息:
mercurial facebook
。我不知道,如果答案仍然與所有FB把 進去
(早期2017年)的努力,鏈接仍然是問題的答案適用(因爲他們偶爾得到更新申請)但請注意,您必須閱讀所有評論和答案。
remotefilelog基本上可以讓按需淺克隆(這樣你就不會獲取歷史一切所有的時間),但你仍然在期望獲取了必要的元數據,以及跨結賬,回購的所有目錄修訂。
使用Mercurial,我可以檢出一個子目錄(SVN中的li [k] e)嗎?如果是這樣,怎麼樣?
https://stackoverflow.com/a/40355673/7836056討論如何使用第三方擴展,允許窄/稀疏檢出(Facebook的sparse.py
)或窄克隆(谷歌的NarrowHG)與水銀因此只能從主存儲庫中「創造」一個目錄(儘管根本不同的折衷)。
(注意措辭事項:參照的方式分佈式版本控制使用它來指中心版本控制時不存在時,「疏結賬」是指一個非常具體的行動)
這上帶來了曙光它是如何工作的:https://www.mercurial-scm.org/pipermail/mercurial-devel/2014-June/059425.html –