2009-05-01 14 views
16

私は仕事場でVisual Source Safe 2005を使わなければならない。 DVCSと組み合わせて、バグがあるかコンパイルされていない場合でも、私の同僚に混乱を与えずにローカルでファイルをチェックインできるようにしたいと思います。DVCSとVisual Source Safeを組み合わせる

私のMercurialでの試行ではうまくいきますが、問題はいくつかあります。つまり、他の誰かが私がチェックアウトしたファイルをチェックアウトしたと考えます。

  1. 無効に自動チェックアウト:

    は、ここで私はそれを管理する方法について私の考えです。

  2. Mercurialの
  3. でローカルに作業
  4. 私は私の変更をプッシュする準備ができています...
    1. クローン私のMercurialリポジトリ。
    2. Visual Source Safeリポジトリを更新します。
    3. Mercurialを使用して2つのリポジトリを引き出してマージします。
    4. すべてをVisual Source Safeにチェックインしてください。

これは合理的な音していますか?私はいつもVSSに関する悪い事を聞いています、これは私にこれらの問題を直接見てほしいのですか?

+0

質問は、より正確なものに言い換えるべきであるVSSのチェックインを行います。「良いバージョン管理システムを吸う作るためにどのように?」 –

+0

私は同じ位置にいます。しかし、あなたが記述したプロセスは、vssを単独で使用するよりも悪く聞こえます。 –

+0

私は変更をほとんどプッシュしないので、それほど悪くはありません。 – WBlasko

答えて

13

WBlasko

私は同じ問題を発見しました。他の開発者がロックを解除するのを待つのではなく、必要に応じてファイルを変更してマージする必要がありました。私のために働いたソリューションでした:

1)VSSプロジェクトの最新バージョン(私はVSSの下にあるすべてのVSSプロジェクトを配置)を取得します:

c:\vss\projectA 

2A)をMercurialの

cd vss\projectA 
C:\vss\projectA>hg init 
で初期化します

2B)、それは意志

hg clone vss\projectA myProjects\projectA 

3で変更することができる場所にプロジェクトをクローン)最新の変更をつかみます(1と2から来た場合はスキップしてください)

C:\myProjects\projectA>hg pull 
C:\myProjects\projectA>hg update 
(solve conflicts if any) 

4)クローンバージョンで自由に作業してください。その後、VSSのコピーにあなたの仕事をプッシュ:

C:\myProjects\projectA>hg push 
(don't run hg update yet, wait for VSS latestes version) 

5)は今、VSSプロジェクトにすべてのファイルのチェックアウトを行う

6)を実行して、変更をマージするVSSプロジェクトの「HG更新」最新のVSSの変更まで

C:\vss\projectA>hg update 
(if there are conflicts, resolve them) 

7)コミットの変更

C:\vss\projectA>hg commit 
は)3.繰り返しの処理に戻る他の人々へのロックを解除するチェックインVSS() を実行し、その後永遠に3-8ステップ.. 。;-)

この方法では、従来のプロジェクトとはまだ話せないうちに、優れたバージョン管理システムで作業できます。あなたはまた、楽しむことができるようにされません:ロックされたファイルと a)は問題ありません B)あなたは水銀 Cを使用する方法を知っている他のユーザーとリポジトリを共有することができます)枝を作る、など

ただ、最初の更新に気をつけなります/紛争、テストを解決してから

乾杯、 ルイス

+1

素晴らしいアイデア。 VSでVSSバインディングをどのように処理しますか?正しく覚えていれば、それらのバインディングはソリューションファイルとプロジェクトファイルに保存されます。したがって、 "クローン"ディレクトリで作業する場合、VSはソリューションがVSSにバインドされていると考えます。 – mlsteeves

+1

@ mlsteeves:自動チェックアウトを無効にするとうまくいくと思います。 –

+0

これは、ありがとうございます。 私が違った唯一のことは、vss \ projectAがどこにあるかを私に示す "VSS"というタグを保持していることです。このようにして、私は 'hg status --ref xx:yy'(xxとyyはリビジョン番号です)を行い、修正されたファイルのリストを取得し、それらのファイルだけをチェックアウトすることができます。 – mlsteeves