1

私は最近新しい仕事を始めましたが、今まで開発者は 1 人しかいませんでした。Subversion で Eclipse と Collabnet を使用する。そのため、クラッシュなどの問題はありませんでした。さらに、元のアプリケーションを完全に書き直したので、他のコードとのクラッシュはありません。

これにより、彼はいつでも (彼のコンピューターが「死んだ」場合に備えて) 何の問題もなくコミットすることができました。

SVN ディレクトリは、トランクなしで構築されました。すべてが直接ルート ディレクトリにあります。

現在、開発者は 3 名です。私はまだ、彼らが毎日コミットできるようにしたいと考えていますが、お互いの仕事を妨げないようにしたいと考えています。したがって、トランクを作成してから、開発者ごとに個別のブランクを作成するのが正しい方法だと思います。あれは正しいですか?

もしそうなら、この変更を行う最も簡単な方法は何ですか。私はこのリンクを見ましたが、それは非常に古いものであり、新しい簡単な方法があるかどうか疑問に思っています. / を /trunk に移動するきれいな方法はありますか?

4

2 に答える 2

2

頻繁にコミットして更新します。

コードの異なるセクションが作成/編集されていない限り、競合が発生する必要があります。競合が発生するのが早ければ早いほど (つまり、競合が小さいほど)、良い結果が得られます。毎日コミットするだけでは十分ではありません。

コミットは、理想的にはアトミックな変更であるべきです。安定性と正確性を維持しながら、コードに何かを追加する最小の変更。つまり、3 つの異なる機能を追加してからコミットする場合、コミットが十分に小さくない可能性があります。各機能には、独自のコミットが必要です。(または、いずれかの機能が小さくない場合は、複数のコミットが行われる可能性があります。)

理想的には、何が変更されるかについても伝えようとする必要があります。実際にどれだけうまく機能するかはさまざまですが、プログラマー A が今日モジュール X で作業することがわかっている場合は、必要でない限りモジュール X のコードを変更しないことをお勧めします。

ルートの移動に関しては、私が知る限り、それは確かに推奨される方法です。一度やれば大したことはないはず。

編集:私は決してsvn-workflowの専門家ではないことを言及する必要があります。私は git を使用する 4 人のチームで約 6 か月間、svn を使用する 2 人のチームで数年間働いてきました。この投稿は、時間の経過とともに私たちを助けたり傷つけたりしたことに気づいたことに基づいています.

于 2012-06-07T07:17:08.310 に答える
1

分岐は、日常業務では必要ありません。全員がメイン ソース ディレクトリ内のファイルで作業するようにします。コードをサブディレクトリ (「/trunk」など) に移動して、ルートに他のディレクトリ (たとえば、ブランチ用のディレクトリ) を配置できるようにするのが賢明な場合があります。

開発すると競合が発生しますが、それらは小さく、簡単に解決できる必要があります。コミットはできるだけ小さくする必要があります。TortoiseSVN には、コミット時に競合を解決するための優れたユーザー インターフェイスがあります。

ブランチを使用する必要があるのは、2 人以上の開発者がトランクにコミットできない機能で共同作業する場合のみです。たとえば、次のリリースでリリースする準備ができておらず、後のリリースが予定されている場合などです。

ブランチを作成するのに適したタイミングは、アプリケーションをリリースするときです。最初のリリース用に 1.X というブランチを作成します。その後、トランクで 2.0 に向けて作業を続けます。1.X ブランチでは 1.0 リリースをビルドでき、その後 1.1 リリースなどもビルドできます (トランクでの 2.0 に向けた作業を妨げることはありません)。

これら 2 種類のブランチの違いに注意してください。リリース ブランチはトランクからフォークされ、永久に存続します。個々のバグ修正はトランクとリリース ブランチの間でマージできますが、リリース ブランチがトランクにマージされることはありません。

機能ブランチでは、トランクの変更はマージによって継続的にインポートされます。機能が完成すると、ブランチ全体がトランクにマージされ、その後ブランチは使用されなくなります。

Release branches            __testing_1.X__..._rel_1.0___.._rel_1.1    ___2.X_branch_
                           /                                          /
___________trunk__________/_______trunk______________________________/____..
      \                                               /
       \_____really big feature for v2 only__________/ 

Feature branches

日常の開発では、分岐を好きなだけ使用できます。1 つのオプションは機能ごとに 1 つのブランチですが、小規模なチームの場合、解決するよりも多くの問題が発生することに気付くでしょう。通常、SVN で競合を解決する方が、複数のブランチを管理して多数のマージを実行するよりもはるかに簡単です。他のバージョン管理システム (Git など) では状況が異なります。

于 2012-06-07T08:03:52.267 に答える