Qt .pro文件和版本控制系统

时间:2013-09-28 14:47:57

标签: git qt version-control github qt-creator

当我在Qt项目上与某人合作时,.pro个文件中始终存在冲突。

例如,有这样的项目树

HEADERS += \
main.cpp \
a.cpp

我在Qt Creator中添加新文件b.cpp,而有人添加了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 个答案:

答案 0 :(得分:1)

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

但是,您可以按照this answer中的说明在专业文件中使用通配符。在此配置中,您无需在添加新文件时修改.pro文件,因此VCS会对此保持冷静。

答案 1 :(得分:1)

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

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

注意,在.pri中,您希望使用$$PWD为路径添加前缀,否则路径相对于.pro的位置。

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

答案 2 :(得分:0)

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

简单的一句话:如果你们身在附近,团队成员可以在添加/删除文件之前先通知其他人。

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

  1. 在成员想要添加文件之前,她必须先提交更改。
  2. 然后她会从主人那里取出变化。如果其他人添加了文件,她现在将拥有最新的.pro文件。
  3. 添加文件。
  4. 快速提交并推动掌握。
  5. 当然,如果其他人在第2步之后和第4步之前添加文件,她可能仍会感到不幸。

答案 3 :(得分:0)

问题在于你和你的同事正在改变" a.cpp"并且你的VC系统并没有弄清楚你们都做了同样的事情,因为改变通常与下一行的不同变化混在一起。

我还没有找到一种方法来配置Qt QCreator来做到这一点,但是避免您遇到的特定冲突的一种方法是始终添加" \"在行的末尾,即使是列表中的最后一项,然后在列表后留下两个空行。 e.g。

原创.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文件。