【问题标题】:Best practice for translating git versioned documents翻译 git 版本化文档的最佳实践
【发布时间】:2014-01-02 12:43:40
【问题描述】:

我正在将一些文件翻译成日文。本文档正在使用 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 分支中的英文文档? (请更新问题。)
  • 没错。我想将翻译提交与其原始提交捆绑在一起,这样我不仅可以获取具有相应翻译文档的特定版本,还可以还原原始文档上的提交。

标签: git translate


【解决方案1】:

由于两个分支共享相同的文件(ja 分支只添加翻译)我建议定期将master 合并到ja

您基本上首先将 master 的新更改合并到您的翻译分支中。这应该可以正常工作,因为您的翻译分支不会更改原始文件。

之后,您可以使用 git diff HEAD^git show -m 查看新更改并在您的翻译中添加另一个提交。

如果您想检查未翻译的提交,您可以执行git fetch; git log -p ja..origin/master,它会显示远程主机上的所有提交,您尚未将其合并到本地ja 分支中。

当然,这无法检查您是否真的翻译了所有内容,但它允许您执行git log -p -m --first-parent 之类的操作来手动检查。这应该交替显示翻译的差异(由您)和未翻译的提交(来自合并)。

您也可以通过git fetch; gitk --all 来直观地了解正在发生的事情。

这将导致如下图:

→ M → T  →  M → T  →  M → T → (ja)
  ↑         ↑         ↑
→ O    →    O    →    O   →   (master)

O 是一个原始提交,M 是合并,T 是翻译提交。

您还可以将翻译直接添加到合并提交中,以使每个原始提交只有一个(合并)提交,但也许有两个单独的提交可能会更清晰一些。

【讨论】:

  • 谢谢你 michas,我最终听从了你的建议。很简单,我也可以通过git cherry ja master 选择未翻译的提交。想想看,版本控制也发生在翻译提交中。绑定每个相应的 en/ja 提交是一个糟糕的想法。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2011-06-06
相关资源
最近更新 更多