0

私はしばらくの間SVNを実験してきました。SVN管理者とSVNユーザーのさまざまな側面をテストするために、小さなテストプロジェクトがあります。最初に少し紹介します。

私はスクリプトを持っています:

<repos>/python/testScript/trunk/testScript.py

このスクリプトは、環境変数$ LOCALSITEをチェックし、結果を一覧表示します。今日、私はその環境の場合、単にスクリプトを壊すバグを発見しました。変数が設定されていません。だから私はすぐに次のように分岐しました:

<repos>/python/testScript/branches/branch-00.01.xx/testScript.py

また、タグをプッシュしました:

<repos>/python/testScript/tags/0.1.1/testScript.py

したがって、この最初のタグは、「$LOCALSITEが設定されていない場合の失敗」のバグを継承しています。トランクがまだ同じ問題に苦しんでいるのと同じように。

タグをプッシュした理由は、このスクリプトが$LOCALSITEが正しく設定されている環境で実行されると%100確信しているためです。だから壊れません。そして、人々はいつものように「tag-0.1.1」を使い続けることができます。

しかし、私はまだその問題を修正したいと思います。だからここに質問があります:

「branch-00.01.xx/testScript.py」で問題を修正してテストしたので、隠れたバグがない限り、「branch-00.01.xx」が機能していることがわかりました。それは正しいステップでしたか?またはトランクを修正する必要がありますか?

今、私は何をすべきですか?固定ブランチを新しいタグにプッシュする必要がありますか?または、トランクを修正してブランチ「branch-00.01.xx」を強制終了する必要がありますか?

ありがとう。

4

3 に答える 3

0

トランク/ブランチは便宜上の論理的な概念(名前)であり、技術的な違いがないため、あるレベルでは何を選択してもかまいません。

私の経験では、あなたは通常、最新かつ最高の開発を行うトランクについて考えますが、すでに顧客にプッシュしたバージョンのブランチを残し、後で作業する必要があるかもしれませんが、進行中のトランクの変更が物事を壊すことを心配したくない。

于 2012-04-12T17:49:09.000 に答える
0

さまざまなサイトがさまざまな方法でこれに取り組んでいます。それの多くは政策問題です。

私が見た中で最高の方法、IMO:

1)トランクは比較的自由ですが、最初に自動テストを実行しないとトランクにチェックインできないというポリシーがある場合があります。これにより、トランクで待機している人が、無関係な変更をテストするのに十分に機能するのを減らす傾向があります。

2)ブランチはまだ変更中ですが、変更が徐々に遅くなります。トランクにチェックインされたものは、関連するブランチへのチェックインについて評価される場合があります。しばらくすると、ブランチが「フリーズ」する可能性があります。たとえば、チェックインにマジックCookieが含まれていないすべてのコミットを拒否するコミットフックを設定します。これは、誰かが(コミット履歴を見て)十分にひどくしたい場合に回避するのは簡単ですが、凍結されたブランチへの偶発的なチェックインを排除します。

3)特定のブランチがかなり安定しているように見える場合、Q/A用にパッケージ化される前にタグにコピーされます。参照のポイントとして、タグは一度作成されると決して変更されません-理論的にはSVNはそれらを同等に変更可能として扱いますが-違いは、やはりポリシーの問題です。

このすべての厄介な部分は、SVN外部参照です。何もない場合は、分岐とタグ付けは簡単です。svncopyを実行するだけで、完了です。それらがある場合は、分岐/タグ付けプロセスの一部として外部参照を調整するスクリプトを作成することになりがちです。しかし、外部参照は時々本当に役に立ちます。私は分岐中にすべての外部参照を「内部化」することを実験してきました。IOWは、分岐とタグ付けを単純にするために、新しく作成された分岐の一部としてすべての外部参照を複製します。次に、重要な修正がある場合、開発者はより多くの場所にチェックインする必要がありますが、これまでのところ、少なくとも私の個人的なプロジェクトでは、それは障害よりも助けになるようです。

于 2012-04-12T17:59:56.263 に答える
0

ブランチモデルは、機能の作業が完了したら、それをトランクにマージすることを前提としています。外の世界に公開したくないので、タグを付ける必要はありません。(実際には、トランクで直接この修正を行うこともできますが、プロセスを調査していることを理解しています)。

まだ始めたばかりなので、mercurialを見てみることをお勧めします。その構文はかなりsvnに似ていますが、次世代の「分散」バージョン管理です。svnをトラッシュトークするつもりはありません。これは素晴らしいシステムですが、これも知っておくとよいでしょう。

于 2012-04-12T18:20:24.660 に答える