2012-04-12 9 views
0

私はしばらくSVNを試してきました。私は、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"をkillする必要がありますか?

ありがとうございました。

答えて

0

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

あなたが始めたばかりなので、私は水銀を見てみることをお勧めします:その構文はかなりsvn風ですが、次世代の "分散"バージョン管理です。私はsvnをゴミ箱に入れることを意味するわけではありませんが、これは素晴らしいシステムですが、これについても知りたいことです。

+0

ええ、私は後でそれについて考えました、そして、これが私がやらなければならなかったようです:トランクを修正してください。ありがとう。そしてはい、私はsvnの経験をシミュレートしようとしています。 – symbolix

+0

バグ修正が完了する前にトランクが変更される可能性がある場合、バグ修正(または新機能)にもブランチが適しています。私が自分で仕事をしているときは、実験を行う前に幹に小さな修正を加える可能性が高いので、私は大規模な実験にのみ使用します。また、失敗した場合のために実験を分離するために、私はそれを別の場所に置くことになります(しかし、戻ってきて後にチェリーピックをしたいかもしれません)。 – alexis

0

トランク/ブランチは便宜上論理的な概念(名前)であり、技術的な違いがないため、選択したレベルに関係なく、ある程度は問題ありません。

私の経験では、あなたは、あなたがすでに顧客にプッシュしているバージョンのブランチを残しながら、後で作業する必要があるかもしれないが、あなたの最新かつ最大の開発を行うトランクを考えるのが普通ですが、トランクは壊れたものを変えます。

0

異なるサイトは、さまざまな点でこの点を取り上げています。その多くは政策問題です。

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

1)トランクは、相対的な自由のために、すべてのですが、何も最初の自動テストを実行せずにトランクにチェックインすることはできないポリシーがあるかもしれません。これは、トランクを待っている人が関係のない変更をテストするのに十分うまく働くのを減らす傾向があります。

2)分岐はまだ変更されていますが、変更が徐々に減速します。トランクにチェックインされたものは、関連する支店へのチェックインのために評価されるかもしれません。しばらくすると、ブランチはEGで "凍結"されるかもしれません。これはコミットフックを設定して、魔法のクッキーを含まないすべてのコミットをチェックインすることを拒否します。誰かがひどく(コミット履歴を見て)望んでいる場合、これは簡単に回避できますが、凍ったブランチへの誤ったチェックインを排除します。

3)あるブランチがかなり安定していると、Q/A用にパッケージ化される前にタグにコピーされます。理論的にはSVNがそれらを同じように変更可能とみなしても、タグは決して一度作成された時点で変更されることはありません。違いはポリシーの問題です。

このすべての厄介な部分は、SVNの外部参照です。あなたが何も持っていない場合、分岐とタグ付けは簡単です - ちょうどsvnコピーし、あなたは完了です。あなたがそれらを持っているなら、分岐/タグ付けプロセスの一部として外部参照を調整するためのスクリプトを書くことになりがちです。しかし、外部参照は時にはときには便利です。私はブランチング中に私の外部参照をすべて「内部化」することを実験していました.IOWは、ブランチングとタグ付けを単純に保つために、新しく作成されたブランチの一部としてすべての外部参照を複製しています。しかし、重要な修正がある場合、開発者はより多くの場所に物をチェックする必要がありますが、これまでのところ私の個人的なプロジェクトでは、これが妨げになるよりも多くの助けになるようです。