Gitを使用してWebアプリケーションの複数のバージョンを管理する


12

アプリのファミリーがあり、すべてが同じベースを持っています。これまで私はこのベースを開発してきましたが、Gitのワークフローは非常にシンプルでした。

  • 開発はdevelopブランチで行われます
  • name-of-the-featureブランチで新機能が開発されています
  • リリースはrelease-**ブランチで行われます

これまで、コードは家族のすべてのアプリで同じでした。彼らが共有する基盤が完成し、今後コードはアプリごとに異なるとしましょう。

同じベースを持つgitとこの複数のアプリをどのように扱うべきかわかりません。

  • それぞれに独自のgitプロジェクトが必要ですか?
  • それらは同じプロジェクトにあるべきですが、それぞれが独自のブランチにありますか?

重要なのは、それらを別々のプロジェクトに配置すると、アプリのベースで行われたすべての変更は、アプリごとに繰り返されることになります。私はgitにあまり詳しくありませんが、各プロジェクトをブランチに保存すると、ベースの変更を各アプリにマージできますか?

誰もこのような状況を経験していますか?どうすればいいかわかりません。

ありがとう!

編集済みバージョン を言ったとき、バージョン番号のような意味ではありませんでした。実際には、同じベースを共有する異なるアプリです。

回答:


7

ベースアプリを独自のリポジトリに残し、そのリポジトリからコンパイルするjarに依存する新しいプロジェクトを作成します。

Gitブランチは複数のアプリ用ではありません。Gitは、各プロジェクトまたは関連するプロジェクトファミリに対して1つのリポジトリを使用することを好みます。ブランチが存在するため、リポジトリを離れることなくまったく新しいプロジェクトを作成できるのではなく、機能を個別に開発できます。

コードを共有する複数のアプリを持ちたくはありません-これはメンテナンスの悪夢です。中央レポジトリでブランチとして開発することをお勧めした場合、各アプリに変更を伝播するために多くのマージが行われます。単一の独立したライブラリに依存し、Apache Mavenのようなものを使用してプロジェクトの依存関係を取り込む方がはるかに簡単です。


共有されるコードの多くはGWTコード(ビュー、サービスなど)です。jarライブラリーに抽出することは可能ですか?または、サーバー側のJavaコードだけが可能ですか?
ジョアンダニエル

ビュー要素は抽出できますが、jarには抽出できません。たとえば、javascriptをすべてのページから単一のファイルに抽出して、各プロジェクトに含めることができます。JSP共通コードは、JSPタグに抽出する必要があります。おそらくページ全体をプルする必要はありませんが、私はあなたのプロジェクトを知らないので、間違っている可能性があります。
マイケルK

このアプローチをどう思いますか:stackoverflow.com/a/2540471/2615737?それは...合理的な縫い目
サンフランシスココラレスモラレス

同じユースケースだとは思いません。その答えは、非常にわずかに異なる同じアプリの2つのバージョンを扱っていますが、この質問は、私がまったく異なるアプリケーションと見ているものに関するものです。「少し違う」場合でも、ブランチをまったく持たないことを希望します。ただし、ビューxmlが含まれている場合、Androidのライブラリを分離する機能を除外することは困難です。その回答者は、自分の状況にとってそれはトラブルの価値があるとは思わなかったようです。
マイケルK

6

アプリがベース自体を変更しない場合は、ベースを独自のリポジトリに残すことを検討してください。次に、個々のアプリごとに新しいリポジトリを作成し、ベースをgitサブモジュールとして追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.