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