当我在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
答案 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)
为您的团队设置一些“添加/删除文件”规则,以减少冲突。
简单的一句话:如果你们身在附近,团队成员可以在添加/删除文件之前先通知其他人。
另一个是在“添加文件”时设置以下规则:
当然,如果其他人在第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文件。