8

数十のフォームとユニットを含む C++Builder XE プロジェクト (VCL フォーム アプリケーション) があります。プロジェクトに属するファイルが追加、削除、または名前変更されるたびに、IDE は次の 2 つのことを行う必要があります。

  1. 影響を受けるユニットがフォームまたはフレームの場合、プロジェクト ソース ファイル (ProjectName.cpp) で USEFORM マクロの呼び出しが追加または変更されます。
  2. プロジェクト ファイル (ProjectName.cbproj) の CppCompile 要素が追加または変更されている

ただし、IDE は、必要な変更を行うだけでなく、既存の USEFORM レコードと CppCompile レコードの一部を、変更の影響を受けなくてもシャッフルします。ユニット (cpp とヘッダー ファイル) を追加すると、プロジェクト ソースを変更する必要がなく、cbproj ファイルのみを変更する必要がある場合でも、USEFORM がシャッフルされます。

新しい秩序がどのように形成されるかについて、特定のパターンは見当たりません。1 つのユニットを編集または名前変更すると、USEFORM の約半分の位置が変更されたように見え、CppCompile レコードはわずか 2 つまたはまったく変更されません。2 台の異なるマシンでプロジェクトのコピーに変更が加えられた場合、ほとんどの変更は似ているように見えますが、すべてではありません。これは、並べ替えがランダムではないことを示しています。

この動作は、Subversion を使用して変更をマージするときに問題を引き起こします。これは、順序の変更によって発生した競合を手動で解決する必要があるためです。

問題は、前述の動作を引き起こしている可能性があるものと、それを取り除く方法です。

4

1 に答える 1

3

この問題の適切な解決策を見つけることができませんでしたが、煩わしさを少し軽減するための簡単な方法を次に示します。

IDE によってランダムに生成された変更をバージョン管理リポジトリに決してコミットしないというポリシーを採用します。ファイルの混同を引き起こすコードに変更を加えるたびに、 と の不要な変更をすべて元に戻しProjectName.cppますProjectName.cbproj。この時点では、ファイルのどの部分を実際に変更する必要があるかがわかるので、まだかなり簡単です。そうすれば、手作業は最小限の作業しか必要としないときに実行されます。さらに、変更をそのままにしておくのとは対照的に、変更をマージするたびに作業を繰り返す必要があるのとは対照的に、作業は一度だけ実行する必要があります。

于 2014-02-15T15:32:43.850 に答える