1

Java EE Web サイトのバージョンを追跡するために、UNIX に git リポジトリをインストールしました。

私は現在、git の使用法ではなく、以下で説明するように使用すると思われる方法で問題に遭遇しました。

私は、Web サイトの開発に貢献する 3 人の開発者のチームで働いています。

最初にサーバーに Git をインストールしたとき、実際の作業ファイルを含む webapps ディレクトリのレポを直接作成し、問題が発生しました。

1) 変更をレポにコミットしている間、私たちの 1 人は通常git add .、コミッターが変更したファイルだけでなく、他の開発者の変更もコミットするリポジトリにコミットします。

この問題に直面したとき、コード全体を格納する異なるディレクトリ内の同じサーバーに、私たち一人一人に個別の非ベア リポジトリを作成する必要があると判断しました。

ここに画像の説明を入力

上の画像に示されているように、webapps によってプッシュされた Web サイトのコンテンツを持つ裸のリポジトリを作成しました。この画像では作業ディレクトリです。

ここでの基本的なワークフローは次のとおりです。

1) 開発者ごとに n 個のベアでないリポジトリを作成します。

2) Web サイト全体の作業ファイルをベア リポジトリから取得する

3)独自のレポに変更を加えた後、ベアレポにプッシュします

4) post-receive フックで構成されている裸のリポジトリは、実際には作業ディレクトリを更新します。

このセットアップは正常に機能していますが、以下に示すように多くの問題に直面しています。

1)別のディレクトリに独自のコンテンツを持つ各開発者は、作業ディレクトリを更新する裸のレポにコードをプッシュする前にコードをテストすることができません.1つのjspファイルの変更であっても、これらの手順のCozは、20のコミットを行うことになります元の作業ディレクトリのみを指すTomcatがあるため、バグなしで適切に機能し始めるまで。

ここが一番厄介な問題になりました。

この戦略により、以前は存在していた競合の問題が解決されましたが、コードのテストに関してさらに大きな問題が生じました。

プロジェクトで GIT を使用することが有益と思われるこのシナリオをどのように改善できますか。

誰でも同じことを改善する方法を提案できますか。

4

1 に答える 1

1

ひょっとしたら、このような戦略がうまくいくのではないでしょうか? 以前、小規模なチームで同様の戦略を使用したことがありますが、うまくいきました。

  • 各開発者は、変更を行う前にブランチを作成します。
  • 開発者はいくつかの作業を行い、ブランチにコミットします
  • 可能であれば、開発者は自分のディレクトリに対して tomcat (または jetty など) を実行してテストします。Maven はこれをとても簡単にします。
  • プッシュする前に、開発者はマスターに対してブランチをリベースします
  • 開発者は自分のブランチをベア リポジトリにプッシュします
  • 次に、あなた (または最終承認を担当する人) がブランチを master にマージします。開発者が正しくリベースすれば、これは単純な早送りマージになるはずです。

各開発者が webapp を実行する方法についていくつかのアイデアを更新しました。

上記の 3 番目の箇条書きを達成するために考えられるいくつかの方法があります。

  • Tomcat の単一インストールを使用します。開発者ごとに 1 つずつ、複数のコンテキストを作成します。

    たとえば、developer1 の場合、次のようなコンテキスト ファイルを tomcat_home/conf/catalina/localhost の下に作成し、dev1.xml という名前を付けます。

    ?xml version="1.0" encoding="UTF-8"?> Context path="/dev1" docBase="/home/developer1/wars/your-webapp-1.0.war" unpackWAR="false"/>

    (xml が投稿に表示されるように、最初の「<」を削除したことに注意してください)

  • 次のようなコマンドラインを使用して戦争を実行するには、jetty を使用します。

    java -jar jetty-runner.jar your-webapp-1.0.war

  • ant や maven などのビルド ツールによって提供されるメカニズムを使用して、webapp を実行およびテストします。たとえば、maven では、jetty-plugin を使用して を使用して webapp を実行しmvn jetty:runたり、プロジェクトをビルドするたびに web サーバーを起動してテストを実行するように構成したりできます。

于 2013-01-26T14:13:02.450 に答える