2009-06-15 23 views
3

私はSourceSafeからSubversionへの移行を検討しており、編集/マージ/コミット対チェックアウト/アップデート/チェックインのパラダイムに苦しんでいます。主な懸案事項は、どのファイルがSubversion(そして誰に)でチェックアウトされているかをどのように知っているかです。VSS to Subversion

VSSに「ステータス検索」と同等のSubversionがありますか?または、「予約済みチェックアウト」の欠如のために可能ではありませんか?

また、「ロック」によってSubversionで「予約チェックアウト」を実装すると、「ロックアウト時のチェックアウト」をサポートするGUI(TortoiseSVN、VirtualSVNなど)がありますか?

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

アップデート:例:ビルド/リリースを行う前に、すべてのファイルがチェックインされていることを絶対に確信したいと思います。開発者は忘れる。したがって、どのファイルがチェックアウトされているかを知る必要があります。これはSubversionでも可能ですか? チェックアウト(またはロック)されたファイルのリストを表示することはできますか?エクスプローラでコードベース全体をブラウズすることは不可能です。レポートスタイルのリストや検索機能がありますか?

答えて

1

私はすべての答え/意見を感謝しています。しかし、ループを閉じるだけで、Subversionで可能なロック/編集/ロック解除のパラダイムを選択すると、はすべてのユーザーのすべての現在のロックを表示するためにTortoiseSvnを使用できます。

  • TortoiseSvnを選択してください。変更を確認し、「リポジトリのチェック」を選択します。
  • ファイルの一覧が表示されます。
  • ファイルがロックされているユーザーを示す「ロック」列があります。
+3

私は明らかにこの質問に遅れて到着していますが、問題が解決されたかどうかわからない貧弱な発券で開発を許可するのは誰ですか?開発者がローカルなコミットされていない変更を持っているかどうかは関係ありません。彼らがあなたを忘れるほど長くぶら下がっていると、他の場所で何かが間違っているのです。 – toholio

1

私は実際にSubversion(または、率直に言って、ペンと紙)をVSSに移動することをお勧めします。あなたの質問にもっと正確に答えるために。 Subversionを使用すると、VSSと同じようにファイルをチェックアウトした人が誰であるかを知る必要はありません。 Subversion(そして合理的なソース管理システム)は、VSSが行う変更をマージすることには苦労しません。

2

TortoiseSVNは、ファイルがロックされているかどうかを知らせ、エクスプローラまたはレポブラウザでファイルを表示するとファイルの上にロックアイコンが表示されます。

しかし、SVNの標準的な操作方法は、VSSのようにロック/更新/ロック解除ではありません。 SVNの "Checkout"は、VSSの "最新版を入手する"と似ています。

個人的には、私はロック/更新/ワークフローのロック解除のワークフローを避けるでしょう。 SVNのマージアルゴリズムはvssよりはるかに優れています。ロック/更新/ロック解除は、基本的に並行開発に反対します。

+0

で合意しました。私はあなたが排他的なチェックアウトの欲望から来ている場所を知っていますが、一度あなたはそれを必要としないか、それを見逃すことなくsvnで行く。 (あなたは快適になるまでロックを使用できます)。 –

8

編集/マージ/コミットのパラダイム(Subversionは必要ありませんが、btw)を使用している場合、ファイルを「チェックアウト」する人は実際にはありません。編集して

は/ なしファイルがロックされている、とあなたはすべてのファイルは、すべてのユーザーにチェックアウト(ロック解除)されていることを前提としているマージ。

開発者はベースライン全体(または少なくともビルドしたい部分)をプルダウンします。気分が悪くなったときに、必要なものを編集します。

最初に、VSSユーザーとしては、ファイルのチェックインがその変更を "抹消"できると思うかもしれません。あなたがそれをチェックアウトしてから私はそれが最初にどのように働くか理解できませんでした。ここでのトリックは、あなたがチェックアウトしたときに他の誰かがそのファイルのバージョンをチェックインしたことをSVNが知ることができるため、単純に置き換えずにマージする必要があることです。それはVSSよりスマートです。 :-)

理論では、あまり起こらないはずです。長期的には、他の誰かがロックしているファイルを処理しようとするよりも、矛盾する編集に対処する時間が少なくて済みます。かつて私が一度行ったナプキンの計算は、私が働いていた場所では正しいかもしれないが、YMMVの計算に戻った。


更新:あなたはおそらく、もう仕事に行くされていないこと、変更をチェックインし忘れるから開発者を保護しようとするあなたの手順について。すべての開発者の作業ディレクトリに根差し、相違点を探すことができますが、どちらも実現不可能であると私たちは考えています。

ロックモデルは、開発者がファイルをセントラルリポジトリに変更する意図を宣言し、編集/マージすることを宣言する方法を提供することは間違いありません。 1つのアプローチのために構築されたツールは、しばしば平坦であり、他のアプローチには意味をなさない。これらのケースの1つです。

私はツールメイソンとして、SVNの小さな(またはおもちゃの)プロジェクトを試してみることをお勧めします。あなたがそれを理解したら、あなたはそれの周りにあなたの頭を包むことができなければなりません。

+0

SVN管理者として、これはおそらく私が直面する最大のハードルです。人々は、ファイル全体の内容ではなく、特定の変更をコミットしていることを理解していません。これは間違った問題(いくつかのルールを追跡するのが難しい)に対していくつかの変更を加えた人につながり、空白の変更を加えて問題をファイルにタグ付けするだけで正しい問題にコミットします。これにより、マージは空白だけを選択し、aは多くの混乱した開発者を作ります。バベッジ氏は、「私はこのような疑問を引き起こすようなアイデアの混乱を正当に察知することはできない」と述べた。 –

+0

このコメントを投稿して申し訳ありませんが、私はそれが理にかなっていると感じています。 私は競合を解決することを心配していません。私はそれがまれであることを理解しています。私は、現在チェックアウトされている、および/またはロックされている(およびチェックアウト/ロックされている)すべてのファイルを見ることができるようにしたい。 – MattH

+0

OK、MattH。最後にいくつかの段落を追加して更新に対応しました。これはそれをより明確にするか? –

8

SVNは楽観的です。マージ競合はまれであり、解決しやすいです。 VSSは悲観的です。マージ競合を解決するのは難しいので、ロックすることは避けてください。したがって、svnでは、ファイルが "チェックアウト"されていることを知る必要はありません。あなたはロックしたり編集したりすることなく、好きなだけバージョンをチェックアウトするだけです。コンフリクトはコミットの前に解決されます。通常は、複数のコミットが同じソース行を変更している場合を除いて、svnは自動的にそれらを解決します。

したがって、「ステータス検索」は実際には必要ありません。

SVNはロックの概念をサポートしています。これは、マージしにくいバイナリファイルに役立ちます。そこにさえ、ロックは難しくありません。それは他の開発者に "私がこのファイルを編集している間はコミットしないでください"というシグナルにすぎません。 SVNのGUIには、ファイルをロックするオプションがあります。特別なsvn:needs-lockプロパティでロックを強制することもできます。

がロック詳細はsvnbookを参照してください: http://svnbook.red-bean.com/en/1.2/svn.advanced.locking.html

0

AnkhSVNは、Visual Studioからの編集上のロックをサポートしていますが、私はその機能に働いていたにもかかわらず、私は本当に他の選択肢が存在しない場合にのみ、これを使用することをお勧めします(たとえば、特定の生成コードとバイナリファイル)。開発者が異なる作業をしているチームの通常のソースファイルの場合、排他ロックを実行する必要はほとんどありません。

無料のような良い3-wayマージツールを使用すると、ときには偶発的な競合を解決することが非常に簡単になります(おそらくチーム全体で数ヶ月に一度、それ以上はありません)。

+0

私は紛争の解決について心配していません。私はそれがまれであることを理解しています。私は、現在チェックアウトされている、および/またはロックされている(そしてチェックアウト/ロックされている)すべてのファイルを見ることができるようにしたい。 「チェックアウトの予約」メカニズムがあり、誰がチェックアウトしたのかを確認する方法があれば、私はロックには関係しません。 – MattH

2

マット、SVNに移動したかつてのVSSユーザーとして

は、私はあなたの欲求不満を理解することができます。しかし、私はあなたがすでにあなた自身の質問に答えていると信じています。あなたは、「ロック/編集/ロック解除」の考え方から「更新/編集/コミット」の考え方への移行に苦しんでいることを示しています。これは本当にあなたの欲求不満の源です。私が知っているのは、私がそこにいたからです。

根本的に私はあなたが解決しようとしている問題は「ロック/編集/ロック解除」の考え方に基づいていると思います...(これは他の回答で以前に述べたように)私たちは何か有害なことからあなたを守りたいので、あなたのアクセスレベルを制限します。 "更新/編集/コミット"の考え方は、基本的にユーザー(この場合は開発者)が信頼できるものの90%を占めていることを認識しているので、あなたが望むことを実行して提供することができます少数の時間に対処するためのツールです。

私はあなたが解決しようとしている問題を修正再表示するほど大胆かもしれ場合は次のとおりです。

は「時々、開発者が新しい変更を展開する急いでいる彼らが戻ってリポジトリに変更をコミットすることを忘れかもしれません。ビルド/リリースプロセスでは、開発者が変更しようとしていたファイルがあるかどうかを知る必要がありますが、その変更には変更がありません。まだリポジトリに保存されていません。 "

この問題の解決策は、開発者が見落とした変更をコミットし、成果を上げるためのビルドプロセスを再開することです。

これは実際に何回起こったのですか?一度やったら、開発者は何回(またはそれ以降の)それを何回行うでしょうか?彼らが継続的な犯罪者であった場合、チームリーダー/マネージャーが「外部のキャリアの機会を求めるように勧められる」まで何度も起こることができますか?

基本的に私の答えは、開発者を忘れずに忘れることのない時々のインスタンスに対処するように訓練することです。

"チェックアウトされた(またはロックされた)ファイルのリストを表示することは可能ですか?"リポジトリ内のすべてのファイルの排他ロックを強制しようとしている(そうでなければ、SVNにはロックされたファイルという概念はない)これは、VSS(または他の「ロック/編集/ロック解除」モデルSCM)を上回るSVN(または他の「更新/変更/コミット」モデルSCM)の大きな利点の1つを厳しく制限します。

乾杯 リチャード

+0

リチャード、思いやりのある応答に感謝します。私はあなたに同意し、 "ロック/編集/ロック解除"でSVNを使用している応答のほとんどは、ねじでポンドするハンマーを使用するようなものです。それが私たちにとって考慮すべきものです。 私は決して "あなたの開発者を忘れないように訓練する"理論を熱狂させています。 「これをすることを忘れないでください」ということが少ないほど、私たちはより良いものを持っています。 – MattH

+0

回答にコメントを追加できないため、ここに投稿します: 「ロックされた」ファイルのリストは、排他ロックが必要と定義したファイルにのみ適用されますか?これは、すべてのファイルに排他ロックが必要なことを意味しますか? – plancake

0

うーん、私は遅れて相手にしていますが:

http://svnbook.red-bean.com/en/1.5/svn.ref.svnadmin.c.lslocks.html

$ svnadmin lslocks /var/svn/repos 
Path: /tree.jpg 
UUID Token: opaquelocktoken:ab00ddf0-6afb-0310-9cd0-dda813329753 
Owner: harry 
Created: 2005-07-08 17:27:36 -0500 (Fri, 08 Jul 2005) 
Expires: 
Comment (1 line): 
Rework the uppermost branches on the bald cypress in the foreground.