Git版本文件翻译的最佳实践

3

我正在将一些文档翻译成日语。这些文档是通过Git进行版本控制的。

由于该文档将被不断更新,因此翻译也需要跟踪变化。我创建了“ja”分支,并将其复制到“ja”目录中,如下所示:

.
├── 01.1.md
├── 01.2.md
├── README.md
└── ja
    ├── 01.1.md
    ├── 01.2.md
    └── README.md

然后我开始逐一翻译原始提交记录。 现在我想知道哪些提交还没有被翻译。 我应该如何将已翻译的提交和原始提交联系起来呢? 我能否改进版本控制相关的工作,比如在原始提交树上进行还原操作?


示例(更新)

现在整个提交日志看起来像这样:

$ git log --graph --all --oneline --decorate

* 63978c0 (HEAD, ja) cherry-pick 220d6f3 + translate
* eef200a cherry-pick 1f828c2 + translate
* 319100b copy files to ja dir
| * 220d6f3 (master) append line to 01.1.md
| * aff68a6 add text to 01.2.md
| * 1f828c2 add text to 01.1.md
|/  
* 33db727 init (touch {01.1.md|01.2.md|README.md})

我想知道即使包含修改内容,是否仍然可以使用git-cherry命令。

$ git checkout master
$ git cherry --some-magic-option ja

+ aff68a6eb865590dab3768edeac43a318834dea0

/README.md 是英文版本,/ja/README.md 是相应的日文版本?有一些主分支和你的 ja 分支?文档的更新发生在主分支上,该分支根本不包含 ja 目录?你如何在 ja 分支中更新英文文档?(请更新问题。) - michas
没错。我想将翻译提交与其原始提交捆绑在一起,这样我不仅可以获取具有相应翻译文档的特定版本,还可以撤销原始文档上的提交。 - ernix
1个回答

3
由于两个分支共享相同的文件(而ja分支仅添加翻译),因此我建议定期将master合并到ja中。
基本上,您首先将master的新更改合并到您的翻译分支中。由于您的翻译分支不会更改原始文件,因此这应该可以顺利完成。
之后,您可以使用git diff HEAD^git show -m查看新更改,并使用自己的翻译添加另一个提交。
如果您想检查未翻译的提交,则可以执行git fetch; git log -p ja..origin/master,它会显示所有在远程master上的提交,您尚未合并到本地ja分支中。
当然,这不能检查您是否真正正确翻译了所有内容,但它允许您执行git log -p -m --first-parent来手动检查。这应该交替显示已翻译的差异(由您)和未翻译的提交(来自合并)。
您还可以执行git fetch; gitk --all以获得视觉印象。
这将导致类似于以下的图形:
MTMTMT → (ja)
  ↑         ↑         ↑
→ OOO   →   (master)

其中O是原始提交,M是合并提交,T是翻译提交。

您也可以直接将翻译添加到合并提交中,以每个原始提交仅有一个(合并)提交,但是可能将翻译和合并分为两个提交可能更加清晰。


谢谢你的建议Michas,我最终决定采纳它。这很简单,我也可以通过git cherry ja master挑选未翻译的提交。想一想,版本控制也恰好发生在翻译提交之内。将每个对应的英文/日文提交联系起来是一个糟糕的想法。 - ernix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接