【问题标题】:IDE generated USEFORM macro calls changing their orderIDE 生成的 USEFORM 宏调用更改它们的顺序
【发布时间】:2013-04-01 22:34:18
【问题描述】:

我们有一个 C++Builder XE 项目(VCL 表单应用程序),其中包含几十个表单和单元。每当添加、删除或重命名属于项目的文件时,IDE 应该做两件事:

  1. 如果受影响的单元是窗体或框架,则会在项目源文件 (ProjectName.cpp) 中添加或更改对 USEFORM 宏的调用
  2. 添加或更改项目文件 (ProjectName.cbproj) 中的 CppCompile 元素

但是,IDE 不仅会进行必要的更改,还会对一些现有的 USEFORM 和 CppCompile 记录进行洗牌,即使它们不受更改的影响。如果我添加一个单元(cpp 和头文件),则 USEFORM 会被打乱,即使这不需要对项目源进行任何更改,只需要对 cbproj 文件进行任何更改。

我没有看到新订单是如何形成的特定模式。如果我编辑或重命名单个单元,大约一半的 USEFORM 似乎改变了位置,只有几个或没有 CppCompile 记录。如果在两台不同的机器上对项目的副本进行更改,大多数更改似乎相似,但不是全部。这表明重新排序不是随机的。

当使用 Subversion 合并更改时,该行为会导致问题,因为它强制手动解决更改顺序造成的冲突。

所以问题是:什么可能导致上述行为以及如何摆脱它?

【问题讨论】:

  • 情况变得更糟了。项目文件也会发生变化,尤其是在添加/删除单个源文件时,其中所有文件的顺序会随机变化。这对 SVN 来说是一场噩梦,因为您没有(或很少)实际更改被 数千行 所掩盖 - 数千行! - XML 中的随机排序更改。啊!没有我知道的解决方案。
  • @DavidM 您使用的是哪个版本的 C++Builder?我想知道他们是否在更新的版本中修复了这个问题。
  • 我主要使用 2010。在 XE4 中似乎不会发生在 Delphi 项目中,但我已经有几个月没有在该版本中使用 C++ 并且不记得它是否已修复也有。

标签: ide c++builder c++builder-xe


【解决方案1】:

我还没有找到适当的解决方案,但这里有一个简单的方法可以让它稍微不那么烦人:

采用永远不会将 IDE 生成的随机更改提交到版本控制存储库的策略。 每当您对代码进行更改以触发文件混合时,请还原 ProjectName.cpp 中的所有不必要的更改和ProjectName.cbproj。此时它仍然相当容易,因为您知道文件的哪些部分实际上应该更改。这样,在仍然需要最少工作量的情况下进行体力劳动。此外,这项工作只需执行一次,而不是让更改保持不变,在这种情况下,每次有人合并更改时都必须重复这项工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多