簡體   English   中英

Subversion:僅使用供應商分支中的一些文件

[英]Subversion: Using only some of the files from a vendor branch

在“ 使用Subversion進行版本控制 ”中,“ 供應商分支”部分為“libcomplex”設置供應商分支,然后使用以下命令將libcomplex復制到主開發分支中:

$ svn copy http://svn.example.com/repos/vendor/libcomplex/1.0  \
           http://svn.example.com/repos/calc/libcomplex        \
           -m "bringing libcomplex-1.0 into the main branch"

但是,如果我們只需要libcomplex的一部分功能(以及文件的子集)呢?

是否可以將libcomplex的一部分復制到主分支中? 或者這可能會導致問題(特別是在升級libcomplex時)?

我不建議拆分從其他來源導入的庫。

如果libcomplex什么的話,你將陷入依賴合並+升級噩夢,但是微不足道。

也許最簡單的方法是首先只將您需要的文件提交到您的存儲庫中。 這使得Subversion方面的問題變得微不足道。 如果您可以編寫一個腳本,從您從供應商處獲取的drop中提取所需的庫子集,那么整個過程可以自動完成。 如果必須手動完成提取,這仍然是可行的,但這有點煩人。 無論哪種方式,它很可能會變成維護頭痛。 第三方庫通常不會被拆分,因此每當庫進行任何結構更改時,您都可能需要進行手動更改。

一種完全不同的方法是將庫(或其子集)編譯為二進制文件,然后僅將該二進制文件提交到源樹中。 這就是我在我工作的項目上所做的事情。 我們為供應商的庫提供了一個單獨的存儲庫。 自定義makefile將構建svn://vendor_repo/trunk並生成svn://vendor_repo/trunk/libs (與每個新drop一起提交),這是我們使用svn:externals引入主存儲庫的libs子文件夾svn:externals 使用此方法,我們的代碼不知道(或關心)lib是子集還是整個庫。 他們所看到的只是一個鏈接的二進制文件。 我們必須手動維護的代碼范圍是我們用於構建供應商庫的自定義makefile。

您使用稀疏目錄

它更適合於提取目錄而不是單個文件,但假設這沒關系,請使用--depth選項來限制您檢出的內容數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM