2

注: 重要な場合は、gitを使用しています(したがって、分岐とマージは簡単です)。これは Android アプリケーションです ( Java - したがって、条件付きコンパイルは実際には適用されません)。

こちらの質問に似ていますが、ソフトウェアの単一バージョンの異なるリブランド間で UI の違い以外の違いがある場合はどうなりますか? たとえば、機能全体またはサブシステム全体をリブランドの 1 つにコンパイルすべきでない場合 (たとえば、ある企業の知的財産であり、他の企業が利用できないコードが含まれている場合) はどうでしょうか?

この場合、ブランド変更ごとに個別のブランチを作成する必要がありますか? もしそうなら、メイン/マスターブランチはコードストレージになるだけで、有用なアプリケーションにコンパイルされない(奇妙な)ため、何か用途がありますか? しかし、メイン/マスター ブランチがないということは、リブランド間でマージするコミットをチェリー ピック (個別に選択) しなければならないことを意味し、これは悪いアプローチのように思えます。

または、ブランチを含まないこれを解決する別の方法はありますか?

4

2 に答える 2

3

あなたの質問で提供された情報から、ブランチを使用しないことをお勧めします。

合併しないと分岐します。したがって、すべてのブランチでバグ修正を利用できるようにするには、多くのチェリー ピッキングを行うか、少なくとも非常に慎重なコミット/マージ処理が必要になります。

アプリケーションによってロードされるライブラリに顧客固有のコードを配置するのはどうですか?

プロ:

  • 顧客固有のコードのみが複製されます。
  • 汎用コードは、理由もなくフォークされません。
  • 汎用コードは、共通インターフェイスに対してコーディングされます。
  • 顧客固有のアプリケーション部品は、対応する顧客にのみ出荷されます。

短所:

  • 共通インターフェースの慎重な設計とライフサイクル管理が必要です。
  • 顧客固有のライブラリを検索してロードするための追加コード。(Java や Android のビルド プロセスではそれほど難しくありません)
于 2012-07-25T14:02:55.357 に答える
2

実際の機密情報/コードの問題については、ブランチはそれをカットしません:
あなたがする必要があります:

  • 機密性の高いコード ベースを独自の git リポジトリに分離する
  • 一部のプロジェクトのサブモジュールとして参照します
  • そのコードを表示するはずのない他のプロジェクトでは、まったく参照しないでください。

アイデアは、機密情報が誤ってあるレポから別のレポにプッシュされないようにすることです。

于 2012-07-25T14:02:06.847 に答える