Git与JSON文件冲突

kat*_*ugh 18 git json localization github git-merge

我们的网站使用一堆带翻译的JSON文件进行本地化(每种语言一个文件).文件的内容如下所示:

{
    "Password": "Passwort",
    "Tables": "Tische"
}
Run Code Online (Sandbox Code Playgroud)

许多团队成员同时编辑这些JSON文件,添加新短语和编辑现有短语,即使人们正在更改不同的行,我们也会遇到很多冲突.

有没有办法以这样的方式设置git,以帮助避免合并冲突?

PS 我发现这个脚本有助于本地合并:https://gist.github.com/jphaas/ad7823b3469aac112a52.但是,我对能够解决团队中每个人的问题的解决方案感兴趣(即使是通过GitHub的Web界面编辑JSON的人).

Nik*_*yrh 12

即使人们正在改变不同的路线,我们也会遇到很多冲突

这不应该是这种情况,如果同一行由不同的人修改,提交然后合并,则只会发生冲突.

哦,我实际上试过这个并遇到了一些奇怪的问题.

提交1(主):

{
    "a": "1",
    "b": "2",
    "c": "3",
    "d": "4",
    "e": "5",
    "f": "6",
    "g": "7"
}
Run Code Online (Sandbox Code Playgroud)

提交2(tmp)

{
    "A": "1",
    "B": "2",
    "C": "3",
    "d": "4",
    "e": "5",
    "f": "6",
    "g": "7"
}
Run Code Online (Sandbox Code Playgroud)

提交3(主):

{
    "a": "1",
    "b": "2",
    "c": "3",
    "d": "4",
    "E": "5",
    "F": "6",
    "G": "7"
}
Run Code Online (Sandbox Code Playgroud)

git merge tmp:正确的结果

{
    "A": "1",
    "B": "2",
    "C": "3",
    "d": "4",
    "E": "5",
    "F": "6",
    "G": "7"
}
Run Code Online (Sandbox Code Playgroud)

然而,如果行也"d"被修改,我会遇到冲突,也许git无法建立差异边界.我避免这种愚蠢的git行为的愚蠢建议是在JSON文件中添加"padding"(丑陋,不是吗?但是没有更多的冲突):

{
    "a": "1",

    "b": "2",

    "c": "3",

    "d": "4",

    "e": "5",

    "f": "6",

    "g": "7"
}
Run Code Online (Sandbox Code Playgroud)


mu *_*u 無 7

在这种情况下我要做的一件事是在数据库表而不是JSON文件中维护配置 - 如果它们经常更改.正如其他人已经指出的那样,如果您的配置始终发生大量更改,则无法避免冲突.无论如何,你的例子看起来更像是英语单词和其他语言之间的映射,所以三列表就足够了.

如果需要,JSON文件可以每次动态生成,也可以在部署期间从数据库表生成一次.