複数の開発者によって変更されたソース管理の.vcprojファイルをどのように管理しますか?

StackOverflow https://stackoverflow.com/questions/166796

  •  03-07-2019
  •  | 
  •  

質問

ソース管理システムとしてSubversionを使用し、VisualStudioプロジェクトファイル(vcproj)を通常どおりソース管理システムに保存します。 Subversionでは、どのような形式のファイルロックも使用しません。したがって、2人の開発者が同じプロジェクトで同時に作業し、両方がプロジェクトにファイルを追加するか、設定を変更する場合、コミットする2番目の開発者は変更をマージする必要があります。

これらの変更をどのようにマージしますか?

vcprojファイルは単なるテキストファイルであるため、手動で編集することは可能ですが、特にジュニア開発者による手動編集にはあまり適していません。

私が考えることができる方法は

  • svnから最新バージョンを取得し、すべてのローカル変更を手動で再追加します
  • ファイルを手動で編集して、自動マージによる競合を解決します
  • 同時変更を防ぐために何らかの形式のロックスキームを実装する
  • 同時変更を行わないように、開発者間で合意します

現在、すべての変更を手動で再追加する最初のオプションを使用していますが、これには時間がかかり、より良い方法があるかどうか疑問に思いました。

ソースファイルでは、ほとんどの場合、自動マージ機能が機能し、多くの競合は発生しません。

役に立ちましたか?

解決

良いdiffツールを使用している限り、オプション2(手動でファイルを編集)が一般的にかなりうまくいくことがわかりました( WinMerge )。私が遭遇した主な問題は、Visual Studioがファイルを並べ替えることがあることです。しかし、優れたdiff / mergeツールがあれば、変更されたコンテンツと移動されたコンテンツを区別できるはずです。それは大いに役立ちます。

他のヒント

これは難しい問題であり、Visual Studioアーキテクチャの弱点だと思います。ラウンドで見つけた方法は、ソース管理にprojファイルをまったく持たず、構成設定を処理するビルドスクリプトを用意することでした。

代替手段は非常に乱雑であり、開発者間で一貫したビルドまたは環境を保証できませんでした。これにより、ダウンストリームの統合に膨大な数の問題が発生し、最終的にはソース管理からプロジェクトファイルを削除するという厳格な措置を講じました。

開発者の環境は依然として不整合になる可能性がありますが、自分で物事を構築しようとしたときに現れました。

ここでTFSを使用していますが、違いはないと思います。
また、ロックせず、プロジェクトファイルのマージを処理する必要がある場合もあります。私はそれがそれほど複雑であるか、または多くの問題であることを発見したことがありません。自動的にマージできない問題が発生することはまれであり、手動のマージプロセスは非常に簡単です。

これには1つだけ注意点があります。頻繁にチェックインしてください。プロジェクト構造に大きな変更を加え、すぐにチェックインしないと、それらの変更が後のマージの複雑さを悪化させ始める可能性があります。プロジェクトの構造に大きな変更を加える場合、私は通常全員に頭を上げます。私は彼ら全員に彼らの現在の仕事をチェックインするよう頼み、それから自分でマージの世話をします。

最近これを見つけました: http://www.codeproject.com/KB/macros /vcproj_formatter.aspx このツールをvcprojファイルとその修正版で実行すると、お気に入りのテキストマージツールを使用して簡単にマージでき、さらにコンパクトなvcprojファイルが作成されます。

オプション1と2は相互に排他的ではありません。開発者がジュニアレベルの場合、より快適であればオプション1(プロジェクトファイルを再取得し、変更を再実行)を使用してください。より上級の開発者にとっては、オプション2(マージツールを使用したマージ)はまったく問題ありません。

これは現時点では魔法の弾丸がない状況だと思います-時々マージは痛みです。

変更をマージするには、diffツール( WinMerge )を使用します。プロジェクトファイルは(ほとんどの場合)本当に単純なXMLです。ただし、ここで重要なのは、優れたコミュニケーションが効果的なソース管理の基盤の一部であるため、マージするときに驚きが生じないことです。

プロジェクトへの同時変更 は、人々がコミュニケーションをとる限り完全に問題ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top