因爲新的見解而更新:五年後,當我看到這個問題時,我意識到這源於嘗試使用版本控制系統作爲包管理器。這當然會導致各種意想不到的問題,我們不應該這樣使用它。如果您正在閱讀這個問題,我建議您搜索一下您的首選語言的軟件包管理器。Mercurial知識庫縮小克隆?
我的原問題:我目前正在從Subversion轉移到Mercurial,我不得不說我不後悔這個決定。然而,當試圖轉換我的項目時,我碰到了一個Mercurial的問題,我似乎無法修復。我有兩個不同的項目:一個是框架,另一個是依賴於該框架的應用程序。下面是該倉庫的樣子:
框架庫:
- 文檔/
- 部署/
- 的lib/
- 測試/
應用程序庫:
- 應用/
- 配置/
- 的lib/
- 測試/
- WWW/
我想什麼是應用程序的lib目錄中包含的副本框架的lib /目錄。我曾經使用svn:externals來做到這一點。現在,我知道Mercurial支持concept of subrepositories,但這看起來不像「正確」的解決方案,因爲它實際上並不像我想要的那樣拉入lib /目錄,因爲您仍然必須拉和推手動更改。這個,再加上一次你克隆框架庫,你會得到所有它,而不僅僅是lib /目錄。我只需要lib /目錄,而不是測試或文檔。
現在,我想出了兩個不同的解決方案來解決這個問題,但我不知道哪個是最好的。第一種解決方案是將框架完全克隆到不同的目錄中,並在指向框架的lib /目錄的應用程序的lib /目錄中創建符號鏈接。把符號鏈接放入.hgignore應該確保一切都很好,我想呢?這意味着您可以編輯框架代碼並進行提交,您也可以編輯應用程序的代碼並進行提交。
另一種選擇是擁有多個存儲庫。整個框架被取消,這意味着您將獲得docs /,deploy /,test/etc.目錄,這些目錄在框架的使用不需要。我認爲可能純粹爲圖書館創建一個存儲庫可能是一個解決方案,儘管我真誠地懷疑它,因爲單元測試非常依賴圖書館本身。
有沒有人知道這個問題的體面的解決方案?
類似問題(和答案)在上[如何克隆在水銀的存儲庫的子文件夾?(http://stackoverflow.com/questions/920355/how-do-i-clone-a- sub-folder-of-a-repository-in-mercurial/40355673) – Anon 2016-11-01 07:24:21