我最近一直在研究一個API庫,它將一個相對較大的外部API的部分封裝到一個更習慣的結構中。正如我在編寫原型代碼時進行API探索一樣,我最終實現了三種具有不同功能級別的可用子API。或者把它簡單來說,我有一個項目,該項目結構看起來像將原型代碼重構Git回購到實際可發佈的項目
dir:root
└ dir:feature-a
└ dir:feature-b
└ dir:feature-c
└ dir:common
└ file:build.gradle
└ file:build.py
各功能與子API之一匹配。值得一提的是,目錄並不平坦,爲簡單起見,我只是省略了子目錄。
我的主要問題是,雖然我曾經爲一次提供過半體面的版本歷史,但它都在一個分支中,只有一個子API準備好發佈。理想情況下,我想找到最便捷的方式
- 拆分現有的回購協議,這樣我可以把每一個功能到自己的分公司,這樣我可以用一個,因爲他們還不夠成熟
- 發佈他們一個保持當前的版本歷史記錄(有一些墊底,有可能)
我以前用過git filter-branch
出於類似的目的,但一個主要的曲線在這裏的球是版本庫的根實際上是另一個倉庫 - 對元級的檔案庫有兩個父母坦承時髦和v這對於保持構建腳本是最新的有用,但如果我試圖按照我想要的方式執行我想要的內容,項目根目錄下的構建腳本將被刪除,這絕對不是我想要的。
最後,common
目錄有點特別 - 我不介意削減它的版本歷史,只要它的內容在那裏。
可以接受使用子模塊而不是功能投入分支嗎? –
@Nick我通常不會*喜歡*子模塊,但如果您的建議有意義,那麼顯然我可能會接受它 - 我更關心最終結果:) – Esko
您可以詳細說明「雙親」及其與存儲庫的關係嗎?對不起,我不清楚。這些父母是外部API的持有者嗎?你的存儲庫是這些父母的分支,他們有共同的承諾,還是普通的樹?除了保留歷史記錄,您的最終目標是什麼 - 您是否希望回饋父母?一個小樣本的回購和描述「重組後,我希望功能-B,功能C不見了,功能,等等等仍然會說明。 – javabrett