【发布时间】:2016-01-12 08:17:59
【问题描述】:
我们的网站使用一堆带有翻译的 JSON 文件进行本地化(每种语言一个文件)。文件内容如下所示:
{
"Password": "Passwort",
"Tables": "Tische"
}
许多团队成员同时编辑这些 JSON 文件,添加新短语并编辑现有短语,即使人们更改不同的行,我们也会遇到很多冲突。
有没有办法以有助于避免合并冲突的方式设置 git?
附: 我发现这个脚本可以帮助本地合并:https://gist.github.com/jphaas/ad7823b3469aac112a52。但是,我对能够为团队中的每个人解决问题的解决方案感兴趣(即使是通过 GitHub 的网络界面编辑 JSON 的人)。
【问题讨论】:
-
Here 是一篇可能有帮助的文章。
-
嗯,如果您所有的开发人员都在不同的时间、不同的行位置、不同的内容修改这些文件,我看不出有什么方法可以避免 冲突。处理合并冲突只是使用分布式异步工作流的一部分。我认为你可以 100% 避免它的唯一方法是让每个开发人员在他们自己修改文件之前等待其他开发人员完成修改文件......但这违背了使用 分布式的全部目的> 像 Git 一样的 VCS。
-
好的,所以经过我的思考,避免合并冲突的最有效的方法是让您的开发人员在进行并提交之前非常频繁地与上游更改同步自己的本地更改。但听起来这不是您的团队正在做的事情,特别是如果他们直接通过 GitHub 进行更改。您可以让他们在彼此之间更频繁地发出拉取请求,但是如果您所做的只是一次提交一行更改,那么这开始变得非常麻烦,更不用说用大量复杂的合并提交污染您的提交历史了。
-
如果您想保持更清晰的历史记录(没有合并提交),您的团队需要养成使用自己本地计算机上的上游更改重新定位本地更改的习惯。据我所知,GitHub 界面不允许你做 rebase,只有经典的 merging。
-
这可能会有所帮助:stackoverflow.com/questions/5587626/git-merging-within-a-line 在我看来(正如 NikoNyrh 也怀疑的那样)git 无法像您想要的那样精细地识别块边界。 git-diff 有
--word-diff选项,在合并之前/之后会很有帮助。一种选择是使用外部工具进行合并,例如wiggle 建议 unix.stackexchange.com/questions/20021/…
标签: json git github localization git-merge