2009-05-21 151 views
2

我正在開發一個移動電話應用程序,該應用程序基於其提供的功能針對許多移動設備。將會有一個基本的功能集,所有的手機都可以支持,然後會有額外的功能取決於特定的手機。手機應用程序的最佳版本控制系統?

如何管理在版本控制系統方面這樣的代碼庫?

我有CVS和VSS經驗,但都不太適合我的這類應用程序的需求。我想要做的最後一件事是分支這些設備集中的每一個的代碼。

讓我做這一點更加明確用一個例子的幫助。假設我正在使用MIDP 2.0開發J2ME應用程序。這是我期望所有支持MIDP 2.0的手機都具備的基本功能集。最重要的是,我會擴展這個應用程序的特定套手機使用他們的SDK。例如。諾基亞S60,諾基亞S60,索尼愛立信,黑莓等等。所有這些都提供了額外的功能,可以讓您在基本應用程序之上構建更多功能,並且大多數時候這些功能都會影響從UI到核心邏輯的整個代碼庫。實現這一

的一種方法是使用一個構建系統的組合與預處理器標誌,並試圖分開足以不會有太多的依賴關係的差異。有時候這會變得相當複雜。我想知道是否有處理這種使用智能源代碼控制系統更簡單的方法....

回答

2

我想看看Subversion的svn:externals

使用svn 1.5,你可以使用目錄的相對引用,而svn 1.6支持基於文件的外部。

的結構。例如像,

  • /電話1 /基
  • /電話1 /特徵1
  • /電話1 /特徵2
  • /電話2 /鹼
  • /電話2 /特徵1
  • /Phone2/Feature3

會很容易使用svn:externals。

在Subversion,你的資料庫結構是非常靈活的,這裏是一個辦法(很多),你可以把那出:

  • 主幹/功能/基地
  • 主幹/功能/特徵1
  • 行李箱/功能/特點2
  • 主幹/功能/特點2
  • 主幹/手機/電話1(使用svn:外部對象到基地,優點1,...)
  • 主幹/手機/電話2(以svn:externals的基地,特徵3,...)

一個提示,但:請確保您使用特定的Subversion修訂爲每個外部參考,它可能開始出來的時候似乎並不重要,但6個月後它將追蹤:)

+0

謝謝,這可能是我們正在努力在具有多個輸入庫和不同檢出的湯拉源在某些構建的應用程序非常有用的。 – 2009-05-21 04:39:33

+0

感謝您的提示。這可能可行。我目前正在重構代碼以將其分解爲核心庫和手機特定的東西。之後會試用這個。 – Prashast 2009-05-22 01:47:11

0

如果您將代碼組織到一些核心模塊和一些取決於核心模塊的電話專用模塊中,那麼使用哪個VCS並不重要。無論如何,我會推薦一個分散的VCS(Mercurial,Bazaar,Git)。

你可以考慮描述你怎麼想達到你想要的(不同的應用版本具有不同功能集),以獲得更合理的建議

0

如果使用Perforce的,你可以使用庫之間的不同映射什麼,您的工作區,並做一些事情,如:

depot/ 
    common/ 
    platform1/ 
    someportedfile 
    platform2/ 
    someportedfile 

,並讓它在您的工作空間映射到:

platform1/ 
    someportedfile 
    common/ 
platform2/ 
    somtportedfile 
    common/ 
1

我不認爲風險投資商就溶膠有你的問題。

也許最好的辦法抽象出來的手機的具體功能,儘可能多地和/或插件類型的模型去。

我只有使用Subversion,CVS,StarTeam中,與VSS經驗。無論如何,分支都是痛苦的......特別是如果你有多個活動分支。你不會得到周圍做不斷合併,分支機構比較,並試圖跟蹤,如果你已經做了更改的所有分支機構。爲指針

相關問題