2010-03-09 27 views
3

有没有一种简单的方法来处理git操作中的二进制文件?在这种情况下,我认为我的理想 - 合并.mo文件(二进制.po消息) - 将优先考虑较新的文件,并将其复制到较旧文件的顶部。如何处理二进制文件的读取,例如.mo文件

那么,我可以配置git来做到这一点,或者它会一直是一个手动练习吗?

回答

3

你可以在gitattributes file添加定制合并驱动(见本SO question),只为*.mo文件,只在相关的目录。

echo *.mo merge=keepTheir > dirWithMoFiles\.gitattributes 
git config merge.keepTheir.name "always keep theirduring merge" 
git config merge.keepTheir.driver "keepTheir.sh %O %A %B" 

随着keepTheir.sh为:

mv -f $3 $2 
exit 0 
+0

这看起来像一个有趣的可能性。当我完成我现在所做的工作后,我会进行调查。 – Leo 2010-03-09 12:57:51

0

那么最好的主意不是让生成的文件(如.mo文件)在版本控制下。

如果你仍然想让他们在Git中,使用标准的方式来解决冲突。

例如,你可以得到相互矛盾的文件的任一版本:

git checkout --theirs -- dir/file.mo 
git checkout --ours -- dir/file.mo 

或者使用git mergetool这将为您冲突的文件的两个版本。

+0

不是我正在寻找的东西 - 每天早上我会将我的更改与我的同事合并。如果他已经添加或(重新)定义的消息,我想要拿起它们而不必在本地重新生成mo文件。当然,如果我们都改变了信息,那么我不得不重新生成信息,但这种情况发生的频率与日食一样多。 我想要的是让git复制最新的文件而不用提问 - 这是一种盲目复制而不是忽略的忽略指令。 – Leo 2010-03-09 12:18:51

+0

但是,如果只有一个更改消息,则根本不应该有任何冲突。 – 2010-03-09 12:40:20