2012-06-19 229 views
1

我有幾個不同的應用程序,我需要在兩者之間共享代碼以減少維護。我一直試圖在stackoverflow和web上閱讀很多,這是一個相當普遍的問題;我還沒有找到我喜歡的答案。在TFS解決方案之間共享代碼

我們的TFS分支結構就是這樣。我們有三個分公司開發,主要和生產。在開發分支上,所有積極的開發工作都已完成,當我們完成開發新功能時,我們將其與Main結合,然後再進行生產。生產分支始終是服務器上運行的代碼。如果我們發現在下一次迭代之前必須解決的錯誤。這些更改主要完成,並在部署時與生產合併。需要共享代碼的應用程序不共享共同的分支層次結構或共同的迭代時間表。事實上,其中一個應用程序每年只進行一次一個月的迭代。 (我知道這從做它的傳統方式略有不同

在我的研究,我發現了幾個不同的解決方案,但我有問題,所有的人都

二進制共享:。 其中常見的我發現的方法是將編譯後的二進制文件分支到開發分支下的文件夾中,我的問題是如果我們在共享代碼中檢測到必須快速修復的錯誤,那麼就會編譯出有問題的代碼。我們會得到所有修改到共享代碼庫的bug。

項目共享: 我的主要問題在於它如何能夠e以可接受的方式。我最初的想法是當新的迭代開始時,將主分支中的更改與共享代碼合併以更新它。將main與開發分支合併,以更新開發分支,並修改錯誤引起的更改。並將共享代碼的新版本更新到開發分支中。但從我的理解,這是不支持的TFS,因爲我會創建嵌套分支。

我的問題是: 如何在解決方案之間共享幾個常見項目,同時保持它們的獨立性,並且能夠修復主分支上的錯誤而不用擔心常見的項目發生了變化,因此引入了新的錯誤。但仍然能夠修復常見項目中的錯誤並將這些修復合併回共享的常見項目中。

+0

對不起 - 我的英語不好:(:(但是**你的問題是什麼**?你想問什麼?你解釋了很多關於你的TFS(?)和分支的結構,你在中間的某個地方...... – Jasper

+0

對不起,我剛剛得到了一個小小的空虛,現在我附加了一個簡短的問題版本 – user1450824

+0

你們作爲服務/ SOA分享什麼可能是一種更好的方法。或許嘗試創建NuGet包,從而「共享」二進制程序集。 – Kane

回答

0

謝謝大家對我們的所有幫助,因爲你們中的一些人對我的最終解決方案做出了貢獻,我選擇了發佈我最終在這裏做的事情。

我最終什麼事做的是二進制共享和代碼共享

對於經常更新,並與相對快速的迭代我引用我需要共享的項目,創造項目的指導方針,以確保代碼是向後項目兼容特定的時間量。

對於更新頻率較低的項目,我在編譯的二進制文件中進行了分支。我還創建了版本化的共享項目並創建了指南,以確保任何向後兼容性衝突的代碼導致版本號主要組件的增量。

+2

通過您的代碼共享,您是如何解決嵌套分支問題的? – Carl

+0

@Carl ditto - 這是如何工作的,因爲TFS不能嵌套分支機構?如果我能弄明白的話,這將是我首選的解決方案。 –

0

我所做的是所謂的「二進制共享」的一個版本。如果您可以將您的共享代碼視爲第三方項目,那麼您可以應用相同的規則進行開發,以便您從運行良好的第三方項目中獲得期望。這意味着您應該專門版本共享代碼(與semVer或類似的東西)並儘可能保持向後兼容性。

是的,您是對的,這意味着如果您在共享代碼中發現錯誤,則需要發佈另一個版本,然後重新編譯依賴於此代碼的項目。

但是,這也意味着如果只依賴共享代碼的兩個項目中的一個需要修復錯誤,那麼只有該項目需要採用新版本。

另一個好處是,它是由項目採取更新。因此,您可以更自信地管理錯誤修復過程。

所以,我的建議是爲共享代碼創建一個新的TFS項目,給它所有對第三方項目(它自己的版本,NuGet等)顯示的愛,然後將構建程序集放入要使用它的項目的庫文件夾中。

希望這會有所幫助。

0

雖然問題不盡相同,但我認爲答案可能與this one一致。

相關問題