2

当我在 Qt 项目上与某人合作时,我们总是会在.pro文件中遇到冲突。

例如有这样的项目树

HEADERS += \
main.cpp \
a.cpp

b.cpp我在 Qt Creator 中添加了新文件,而有人添加了c.cpp. 结果我有新.pro文件

HEADERS += \
main.cpp \
a.cpp \
b.cpp

我的同事有文件

HEADERS += \
main.cpp \
a.cpp \
c.cpp

当我们都提交更改时,我们的项目文件将发生冲突。配置 Qt Creator 或 git 以正常将这些东西合并到:

HEADERS += \
main.cpp \
a.cpp \
b.cpp \
c.cpp
4

5 回答 5

1

您可以尝试使用通配符来避免频繁更改.pro.pri文件。

HEADERS += $$files(*.h)
SOURCES += $$files(*.cpp)

请注意,在 a 中,.pri您需要在路径前加上前缀,$$PWD否则路径是相对于.pro.

HEADERS += $$files($$PWD/*.h)
SOURCES += $$files($$PWD/*.cpp)
于 2015-02-05T17:36:05.347 回答
1

首先,合并冲突不是由 Qt Creator 管理,而是由版本控制系统管理。所以你不能说“配置 Qt Creator 来正常合并这些东西”。这是您需要配置的 VCS。

但是,您可以在此答案中描述的 pro 文件中使用通配符。在此配置中,您无需在添加新文件时修改 .pro 文件,因此 VCS 将对此保持冷静。

于 2013-09-28T15:11:39.413 回答
0

为您的团队设置一些“添加/删除文件”规则以减少冲突。

最简单的一个:如果你们在物理上靠近,团队成员总是可以在添加/删除文件之前先通知其他人。

另一种是在“添加文件”时设置以下规则:

  1. 在成员想要添加文件之前,她必须先提交更改。
  2. 然后她会从主人那里拉变化。如果其他人添加了文件,她现在将拥有最新的 .pro 文件。
  3. 添加文件。
  4. 快速提交并推送到大师。

当然,如果其他人在第 2 步之后和第 4 步之前添加文件,她可能仍然会不走运。

于 2013-09-28T15:38:56.940 回答
0

我认为您可以手动添加每个文件或在使用下一个符号附加后编辑 pro 文件

HEADERS += header1.h
HEADERS += header2.h
HEADERS += header3.h

但我不知道如何对 qt 创建者说使用这种方法

于 2015-08-15T04:38:05.713 回答
0

问题是您和您的同事都在更改“a.cpp”行,而您的 VC 系统没有发现你们都做了同样的事情,因为更改通常与下一行的不同更改混为一谈.

我还没有找到一种方法来配置 Qt QCreator 来执行此操作,但避免您遇到的特定冲突的一种方法是始终在行尾添加“\”,即使是列表中的最后一项,然后在列表后留两个空行。例如

原始.pro:

HEADERS += \
main.cpp \
a.cpp \


# other stuff

您的新 .pro:

HEADERS += \
main.cpp \
a.cpp \
b.cpp \


# other stuff

然后,如果您的同事提交:

HEADERS += \
main.cpp \
a.cpp \
c.cpp \

# other stuff

那么你的 VC 系统通常应该在没有帮助的情况下解决冲突。

我还建议保持这些 .pro 文件列表(SOURCES=、RESOURCES= 等)按字母顺序排序,因为它有助于使 VC 提交历史更易于理解,而且由于似乎没有办法配置 Qt QCreator 来做到这一点,我倾向于总是通过在文本模式下编辑 .pro 来添加新文件。这样,我发现我总是可以控制发生的事情。如果您不是像我这样的控制狂,并且发现单击一堆 GUI 文件浏览器式的东西解放了(与烦人相反),您可以先使用 GUI 的东西,然后以文本模式打开 .pro 并整理在进行更改后但在进行任何提交之前将 .pro 文件归档。

于 2018-02-08T04:26:21.293 回答