2

私は、ソフトウェアの複数のバージョンを持つグループと協力しています。

このソフトウェアには多くのデプロイがあります。クライアントが新しい「イベント」をスローするたびに、独自の DB を使用して新しい Rails アプリをデプロイし、サーバーに配置します。

これまでは、各バージョンの「マスター」を保持し、そのバージョンのソフトウェアを使用する各インストールをそのマスター バージョンにシンボリック リンクしていました。

これにより、マスターに変更を加え、そのマスター更新から 5 つのインストールを展開することができました (それがグローバルに必要なバグ修正またはホットフィックスである場合)。イベントのインストールの 1 つで必要または望ましい。

このようなシステムを管理および維持するための効果的な方法にはどのようなものがありますか?

これらの古いバージョンのソフトウェアをすべて新しいバージョンのリポジトリに入れるにはどうすればよいですか?

「v1.0」という名前の新しいブランチを作成する すべてのファイルを削除する タグ付けしたいバージョンのアプリからファイルを移動する これらの変更をコミットする ?? そのブランチをマスターのタグに変換できるgitコマンド。

これは純粋な推測であり、これに加えて、git の経験が豊富な人から得たアイデアをテストします。

最後に、このタイプの変換に関する一般的なヒントがあれば、共有してください。

4

2 に答える 2

2

複数の分岐ツリーを管理することの苦痛は、私の経験では非常に高いものです。

代わりに、さまざまな展開が持つさまざまな機能を単一のソース ツリーに構築し、各インスタンスで必要なものに合わせてインストールを調整するための非常に優れた構成/機能フラグ システムを用意することを強く検討します。すべてを単一のアプリケーションに変えることもできます。複数のデプロイを行う代わりに、各デプロイがその内部の「アカウント」、つまりマルチテナント アプリになります。

于 2013-02-09T10:14:15.803 に答える
1

構成できないインストールごとの機能がある場合は、インストールごとのブランチを作成し、アップグレードが必要なときにマスターにリベースします。http://git-scm.com/book/en/Git-Branching-Rebasingを参照してください(最初からその本を読んでください)。

履歴をインポートするには:各バージョンが独自のディレクトリにあることを期待しています。次に、最初のディレクトリでGitリポジトリを初期化し、各バージョンディレクトリからこの新しいディレクトリへのシンボリックリンクを作成しますfirst/.gitgit add . && git commit -a次に、各バージョンディレクトリに入力します。その後、すべてのコミットが作成されるので、シンボリックリンクを削除し、.gitディレクトリを新しい(空の)ディレクトリに移動して入力git reset --hardします(その空のディレクトリのコンテンツが最後のバージョンに復元されます)。

を実行している間、日付と作成者の名前を変更する必要がありますgit commit。オプションについては、マニュアルを参照してください(git commit --help)。

于 2013-02-09T03:03:31.913 に答える