2011-12-14 16 views
4

パッケージ名(したがってディレクトリ名)が異なる同じAndroidプロジェクトのブランチ間を簡単にマージする方法があるのだろうかと思います。私は多くの支店を持ち、それらのすべてを最新に保つ必要があるので、私はこれらのマージを効率的に行うための最善の方法を検討しています。パッケージ名が異なる場合、ブランチ間でどのようにマージするのですか?

当社のAndroidプロジェクトのディレクトリツリーは、私たちは、クライアントのためにカスタマイズされたバージョンを作るとき、私は、このようなclient1appやclient2appとしてパッケージ名を、変更します。この

\assets 
\libs\... 
\res\... 
\src\com\mycompany\mainproject 
AndroidManifest.xml 
build.xml 
myproject.iml 
myproject.ipr 

のように見えます。さまざまなクライアントの異なるアプリとしてAndroidマーケットに存在するには、別のパッケージ名が必要です。だから私は、パッケージ名と一致するように変更しなければならないsrcフォルダ名を除いて、同じファイル名とディレクトリ構造を含む別々のブランチを作る。

\src\com\mycompany\client1app 
\src\com\mycompany\client2app 

それらのフォルダの下filesnamesはまだmainprojectと同一である:だからclient1appまたはclient2appは、次のディレクトリ構造を持つことになります。ディレクトリ名が異なるだけです。 (ファイルの内容は、package節を除いてほとんど同じです。)

ソース管理にはSVNを使用します。ですから、私がメインプロジェクトからclient1appにマージするときは、トップレベルのファイルと他のディレクトリをマージしてからsrc \ com \ mycompany \ mainprojectをsrc \ com \ mycompany \ client1appに手動でマージする必要があります。これは5つの異なるマージです(トップレベルと4つのサブディレクトリ用)。ディレクトリ名が異なっていない場合は、これは簡単な単一ステップのマージであり、その方法を知っています。

質問1:\ src \ com \ mycompany \ mainprojectと\ src \ com \ mycompany \ client1appに同じファイル名が含まれていることをSVNに伝える構成はありますか?または、チェリーピックへの他の方法は2つのブランチ間で簡単にマージできますか?

質問2:Gitはこれに適していますか?

答えて

2

共通コードのAndroid Library projectは、これを最大限に活用するのに役立ちます。それで、あなたは全く合併する必要はありません。

1

\ src \ com \ mycompany \ mainprojectと\ src \ com \ mycompany \ client1appに同じファイル名が含まれていることをSVNに伝える構成はありますか?第SVNが実際に追跡することはありません

改名さ変更されたファイルのマージはエラーを生成の名前を変更して、名前の変更「ツリーの競合」(私は/ /テストされていないと仮定し、同様の効果がdirの名前の変更に表示されます)

Gitはこれに適していますか?

はい、GitまたはMercurialまたはBazaarには、結果としてリネームトラッキングとより簡単なマージパスがあります。私は、個人的にはGitヒューリスティックよりもMercurialスタイルの手動選択を好みますが、好みは異なる可能性があります

関連する問題