今天我尝试合并一个Qt项目的两个git分支。两个分支都为它们添加了一些新的字符串和新的翻译。现在,Qt的lupdate工具在.ts文件中存储了需要翻译的源文件的行号。正如您可以想象的那样,两个分支的行号不相同,并且当两个转换文件都已更新时,这将导致每个单独的转换文件出现数百个这样的合并冲突:
<<<<<<< HEAD
+ <location filename="../../src/network/mail/CSmtp.cpp" line="856"/>
=======
+ <location filename="../../src/network/mail/CSmtp.cpp" line="860"/>
>>>>>>> master
您可能会说,只需使用其中一个版本并再次运行lupdate,但这样您就会丢失其中一个分支的所有新翻译。
其他工具,如gettext,没有这个问题,因为它们不存储行号。
在Qt中有什么好的方法来避免这个问题?
发布于 2015-04-25 03:09:43
您也可以使用-locations none
通过lupdate
删除行号。这将消除与行号的任何冲突,但您将失去源代码中字符串的上下文。对于.ui
文件,还有-no-ui-lines
参数。
lupdate -locations none -no-ui-lines ...
发布于 2015-04-27 07:13:32
如果您使用ours
或theirs
策略进行合并(请参阅MERGE STRATEGIES
一章中的git merge doc ),您将获得来自两个分支的所有翻译:
git merge branch1 -X theirs
git merge branch2 -X theirs
然后运行lupdate
命令来修复rong number行。
https://stackoverflow.com/questions/28220472
复制相似问题