none
Visual Sourcesafe 2005 「最新バージョンの取得」コマンド実行時の書き込み可能ファイルの置換確認ダイアログについて RRS feed

  • 質問

  • tamagoと申します。
    初めて投稿させていただきます。

    Visual Sourcesafe(以下VSS)2005を利用し、ソース管理を行っているのですが、「最新バージョンの取得」コマンド実行時の書込み可能ファイルの置換確認ダイアログ(作業フォルダにチェックアウトしていない書込み可能ファイルがある場合に表示されるダイアログ)の4つのオプションの内、
    「作業フォルダのファイルを変更しない」オプションと、
    「ローカル バージョンをチェックアウトしてから、データベースのバージョンと変更点をマージする」オプションが
    なぜか利用できなくなっています。

    この現象はVSSエクスプローラからのコマンド実行時と、Visual Studio 2005上でのSourcesafeプラグインからのコマンド実行時の両方で発生しています。

    いままで当方ではVB6.0+VSS6.0dの環境でチーム開発を行っていたのですが、VisualStudio2005への移行を始めているところでこの問題が発生しました。

    保守等の関係で、VB6.0とVisualStudio2005の両方をマシンにインストールして利用しているのですが、VSS2005をインストールすると、VB6.0上のSourcsafeプラグインがVSS2005のプラグインで上書きされてしまうため、VSS2005をVB6.0でも使わざるをえません。

    そこでこまってしまったのが「作業フォルダのファイルを変更しない」オプションが利用できない点です。いままでiniファイルやudlファイルなど、「マスタアイテムとしてソース管理は行いたいが、開発メンバが自身の開発環境に合わせて編集して利用するファイル」は読み取り専用属性をはずして編集し、確認ダイアログで「作業フォルダのファイルを変更しない」オプションを選択することにより運用してきましたが、この運用がVSS2005で出来ないのです。

    なぜ確認ダイアログの2つのオプションが利用できないのか、利用する方法はないのか、Webやヘルプを散々探しまわりましたが、解決方法は見つけられませんでした。

    この件について情報お持ちの方がいらっしゃいましたらよろしくお願いします。

    2007年3月20日 10:09

回答

すべての返信

  • 情報を持っている訳ではなく、ただの感想になります(^^;

    この件、私も最初、戸惑いました。
    以前、それなりにググってみたのですが、情報は見つけられませんでした。
    (確か、US の MSDN フォーラム等も検索したように思います)

    4つの選択肢…
    a. 作業フォルダのファイルを変更しない
    b. データベース内のファイルで作業フォルダのファイルを置き換える
    c. ファイルをチェックアウトして、変更点を保存する
    d. ローカル バージョンをチェックアウトしてから、データベースのバージョンと変更点をマージする

    私は c の「変更点を保存する」という表現を「変更点は保持する」(つまり内容はそのまま)と解釈し、これを選択するようにしています。動作的には問題ないようです。
    すると a と c の違いが謎になりますので、今後何かの拍子に両方が有効になったりしないことを願っています(^^;

    d ですが、これまでチェックインする際に、他の人が行った変更とマージすることはありましたが、チェックアウト時のマージという意味自体が私には理解できていませんので、とりあえず無視しています(^^;
    ピンなどの機能は使いこなせていないのですが、その辺りが関係するんでしょうか...

    ちなみに、これまで私は VSS で操作していましたので、VSS での「相違点の表示」が VS では「比較」になっている点に、最初の内は戸惑いました...

    2007年3月22日 4:31
  • TH01さん、書込みありがとうございます。
    同じ経験をしている方がいらっしゃってちょっとほっとしています。

     TH01 さんからの引用

    4つの選択肢…
    a. 作業フォルダのファイルを変更しない
    b. データベース内のファイルで作業フォルダのファイルを置き換える
    c. ファイルをチェックアウトして、変更点を保存する
    d. ローカル バージョンをチェックアウトしてから、データベースのバージョンと変更点をマージする

    私は c の「変更点を保存する」という表現を「変更点は保持する」(つまり内容はそのまま)と解釈し、これを選択するようにしています。動作的には問題ないようです。

    すると a と c の違いが謎になりますので、今後何かの拍子に両方が有効になったりしないことを願っています(^^;

    a と c の違いは「チェックアウトするかしないか」ですよね。

    c の場合はチェックアウトしてしまうので、チェックアウト取り消し時にはVSSデータベース上の最新ファイルでローカルファイルが置き換えられてしまいます。
    チェックアウト取り消し時のオプションで、「置換しない」を選べばそのときは置き換えられませんが、次に最新バージョンを取得するときに勝手に置き換えられてしまいます。
    VSSデータベースの個別設定で「チェックアウトしていないファイルに読み取り専用属性をつける」をOFFにしておいても、次の最新バージョンの取得時に書込可能ファイルの置換確認ダイアログが表示され、またチェックアウトしなければならないので、堂々巡りになってしまいます...。

     TH01 さんからの引用

    d ですが、これまでチェックインする際に、他の人が行った変更とマージすることはありましたが、チェックアウト時のマージという意味自体が私には理解できていませんので、とりあえず無視しています(^^;

    d は単純にローカルでマージ処理を行うものではと思います。(→VSSデータベース上への影響がない。チェックインしてはじめてマージされた内容がVSSデータベースへ反映される。)

    2007年3月22日 8:14
  • チェックアウト時の話ではなく、最新バージョンの取得操作時の話でしたね。
    完全にぼけていました... orz

    最新バージョンは取得したいけどチェックアウトはしたくない場合に a が選択できないと、確かに不都合ですね。
    しかも c を選ぶとチェックアウトはされるのに、取得したファイルは ReadOnly になるようです。
    運用で回避してはと思い、c を選んだ後に「チェックアウトの取り消し」を行い、その際 [ローカルコピー] に対して "変更しない" を選択すればよいかなと思って試しましたが、VS 上ではローカルコピーをどうするかは選択させてもらえないですね(常に "置換する" として動作)。

     tamago さんからの引用
    a と c の違いは「チェックアウトするかしないか」ですよね。

    あ、そういうことですか。
    私は間違えてチェックアウト時の画面の話をしてしまっていましたので、a も必然的にチェックアウトに伴う選択肢だと思いこんでいました。私の話の場合では、a が有効になることはありえないですね。よかった~

     tamago さんからの引用
    d は単純にローカルでマージ処理を行うものではと思います。

    そう書かれても実はすぐに理解ができませんでした...
    以下の手順のことですね。

    1. user1 と user2 が同じバージョンをチェックアウト(多重チェックアウト)
    2. user1 が変更を行い、チェックイン
    3. user2 も変更を行い、チェックインする前にローカルでマージ

    私はこれまで、3 の時点でチェックインを行ってマージしていました。
    わかってしまえば単純な話なのに、バカというか頭が固いというか...(^^;
    勉強になりました~。

    2007年3月22日 9:32
  • おそらく同じことが既にフィードバックされていました。

    Get Latest Version has no option to Leave This File
    http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=122452

    将来のバージョンでは直すかもしれないそうです。
    回避策のところに ssgui.dll をバイナリエディタで変更してしまう方法があるらしいことが書かれています。
    (やっていいのかどうかはわかりませんが(^^;)
    (追記:MSFT の人が方法を書かれているようですのでたぶんOKかな)

    2007年3月22日 10:05
  • TH01さん、書込みありがとうございます。

    ちょっとアブナそうですがdllの書き換えを試してみます。

    後日結果をお知らせしますね。

    2007年3月23日 4:16
  • 必要に迫られ、恐る恐るdllの書き換えを試してみました。

    参考にしたのはhttp://groups.google.com/group/microsoft.public.vstudio.sourcesafe/browse_thread/thread/3dd74f26ae23a249/db3c4721b8dd4e6f?#db3c4721b8dd4e6f
    のAlin Constantin[MSFT]さんの書込みです。

    VSS2005インストールフォルダのssgui.dllを書き換えたところ、VSSエクスプローラーからの最新バージョンの取得で、書込み可能ファイルの置換確認ダイアログの「作業フォルダのファイルを変更しない」オプションが利用できるようになりました。動作も問題なさそうで、VSS6.0の操作と同様の振る舞いをしてくれました。

    しかし、Sourcesafeプラグインからの最新バージョンの取得ではオプションが利用できないままでしたので、先のスレッドをよーく見たところ、ssscc.dllの書き換えも必要とのことで、そちらも書き換えたら利用できるようになりました。こちらも動作は問題なさそうです。

     TH01 さんからの引用

    おそらく同じことが既にフィードバックされていました。

    Get Latest Version has no option to Leave This File
    http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=122452

    将来のバージョンでは直すかもしれないそうです。
    回避策のところに ssgui.dll をバイナリエディタで変更してしまう方法があるらしいことが書かれています。
    (やっていいのかどうかはわかりませんが(^^;)
    (追記:MSFT の人が方法を書かれているようですのでたぶんOKかな)

    厳密にはdllの書換はNGのような気がしますが、Microsoftのサイトに回避方法として先のスレッドが紹介されているのでOKなのかもしれませんね(^^;)

    ただ、Alinさんの書込みをよんでいると、「作業フォルダのファイルを変更しない」オプションは確たる理由があって利用できなくしているのではないかと思えるので(英語はあまり得意ではないので本当にそう書いてあるかどうかは何ともいえませんが...(^^;))、今後のプロジェクトについてはこのオプションを利用しないで済むような運用を心がけたいと思います。

    TH01さん、いろいろ情報を提供してくださりありがとうございました。

    2007年3月23日 8:18
  • 自分もVS2005で環境を入れ替えたりする(サーバとローカル等)ので、「app.config」 のチェックアウト/イン作業(履歴も残る)が面倒でした。それにオプションボタン『作業フォルダのファイルを変更しない』がグレーなままのは解せませんでした。
    非常に助かりました。ありがとうとざいました。
    2008年7月25日 8:37