0

当社では、複数の顧客に販売したデータ統合ツールを構築しました。ほとんどのお客様には、明確な要件があります。継承に基づく自作のメカニズムを使用して、これらの顧客固有の拡張機能を実装しました (したがって、すべてのインストールで、どのクラスをロードし、どのクラスをロードしないかがわかります)。ただし、この顧客固有のコードはすべて、標準コードと同じコードベースにあります。

現在、これはいくつかの理由で不可能になっています (コードベースが醜く大きくなっている、要件が衝突しているなど)。

このため、コードベースを分離することにしました。1 つは標準製品用で、いくつかの顧客固有のコードベースです。

現在、このアプローチをサポートするバージョン管理システムを見つけようとしています。ここに私のウィッシュリストがあります:

  • 異なるリリースのいくつかの「標準」コードベースのサポート
    • 1.0 リリース
    • 1.1 リリース
    • 2.0 ベータ版/開発中
  • 複数の「顧客」コードベースのサポート
  • 標準コードベースを複製して顧客コードベースを作成する機能
  • 顧客コードベースの標準コードを変更する機能
  • 新しい標準リリースで顧客のコードベースを更新する機能 (および、顧客のコードベースで変更された標準コードに起因する競合を何らかの方法でマークする)

私たちのチームはまだ非常に小さいため (~4 人のプログラマー)、開発者自身が簡単に処理できるはずです。

ところで、私たちのソフトウェアはSpringSTSを使用して構築されています (つまり、 Eclipse プラグインも素晴らしいでしょう)。

私がこれまで調査してきたすべての VCS は、複数ではなく1 つのソフトウェアを構築することを目標としているようです。いくつかの提案やベストプラクティスのアプローチを期待しています。

4

1 に答える 1

0

単に

git を取得し、プル リクエスト プロセスに進み、このワークフローをサポートする GUI を利用するだけです。

リリースはカスタム開発とは大きく異なりますか?

明確にするために、あなたが直面している状況は何ですか:「標準」開発にはバージョンがあり、メンテナンスのために独立している可能性があります。新しいバージョンからいくつかの修正を取得して古いリリースに組み込む必要がある場合があります。ホットフィックスを解決する方法が必要です。 .

これらはすべて、git、hg などの分散バージョン管理システムによってうまく解決されます。私は hg から始めましたが、後で git がより頻繁に使用され、標準インストールでは必要なものがすべて提供されることがわかりました (一部の hg 機能には当てはまりません)。

カスタム開発に関しては、実際には、標準バージョンと概念的に大きな違いはありません。独自の名前で識別されるプログラムの別の変更が必要なだけです。これは最終的に、これらがカスタムのものであることを示します。

分岐またはプル リクエスト プロセス?

さまざまなバージョンやカスタム開発でさまざまな「スイムライン」にアプローチするにはどうすればよいでしょうか?

分岐ワークフロー モデル

明白な答えは「分岐」です。さまざまな分岐モデルに関する多くのチュートリアルがあり、それらが問題を解決してくれるはずです。

ただし、分岐も自明ではなく、どのスタイルが最適かについて長い論争が発生する場合があります。

トピック リポジトリとプル リクエストのワークフロー

幸いなことに、さらに単純な解決策があります。Pieter Hintjens の記事http://hintjens.com/blog:24では、"Branching thinked harmal" に関するトピック リポジトリとプル リクエスト プロセスを使用して、より単純なモデルが提供されています。これは GitHub と BitBucket で管理されているプロジェクトの数であり、これがリスクを最小限に抑えた最も効果的なソリューションであることがわかりました。

最終的な推奨事項

プル リクエストの作業プロセスでは、関連する通信をサポートする GUI があると便利です。また、GitHub や BitBucket 以外にも、いくつかのオープン ソース ソリューションを含むソリューションが市場に出回っています。

長期的な準備をしてください - Pieter Hintjens によるリンクされた記事から始めると、実行が少し短くなる可能性があります。次のステップでは、BitBucket などでプロジェクトを試してから、「最終的な」システムを設計します (時間の経過とともに進化しますが、 git リポジトリは、変更を維持するのに適しています)。

于 2013-10-10T12:32:58.960 に答える