GitLab 汉化工作流
首先,GitLab 汉化是针对 release 分支,而不是 master 分支。GitLab 的开发工作流是采用自身推荐的 GitLab Flow 开发工作流;简单的说,就是 master 分支用于开发新功能,发布版本到 release 分支(即 major-stable 分支);修补版本直接在 release 上迭代。
所以,GitLab 每个 release 版本的汉化在 git 树上独立的、不交叉的。即,7.1 分支上的汉化提交不会直接合并到 7.2 分支上,每个汉化 release 分支来源都是纯净的(pure)。
翻译的继承采用的是前一个 release 分支的 diff 然后 patch 到下一个版本的汉化 release 分支。
大致工作流程如下:
1、开始翻译项目
1 2 3 4 5 6 7 8 9 10 11 | # 克隆源代码 git clone https://gitlab.com/gitlab-org/gitlab-ce.git cd gitlab-ce # 检出 7.1 版本分支 git checkout 7-1-stable # 创建 7.1 版本汉化分支并切换工作区 git checkout -b 7-1-zh # 开始翻译 nano app/views/layouts/_head.html.haml git add app/views/layouts/_head.html.haml git commit -m "translate layout head" |
2、小版本更新,从 7.1.0 升级到 7.1.1
1 2 3 4 5 6 7 8 9 | # 检出当前的 7.1 版本分支 git checkout 7-1-stable # 拉取最新版本 git pull # 然后切回当前翻译的 7.1 版本汉化分支 git checkout 7-1-zh # 合并最新的版本 git merge 7-1-stable # 如果发生冲突,手工处理合并冲突后再提交 |
3、大版本更新,从 7.1.x 升级到 7.2.x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # 导出前一版本 7.1 分支的差异文件 git diff 7-1-stable..7-1-zh > ../7-1.diff # 获取新分支 git fetch origin # 检出新的 7.2 版本分支 git checkout 7-2-stable # 创建 7.2 版本汉化分支并切换工作区 git checkout -b 7-2-zh # 应用差异文件 git apply ../7-1.diff # 将成功的修改提交 git add app/views/layouts/_head.html.haml git commit -m "import 7.1 translate" # 如果 patch 产生了 .rej 文件,作为 todo 处理未成功 patch 的 diff 差异 nano app/views/layouts/_head.html.haml git add app/views/layouts/_head.html.haml git commit -m "translate layout head" # 处理完所有 .rej 并删除,并检视相关代码继续翻译 |
步骤 2 和 3 可交替进行互不影响。原则上,新的大版本工作开始之后就不再维护旧版本分支的翻译;即,只翻译最新的内容。
优点:
- git 版本树干净;确保翻译分支会污染原有分支和其他的翻译分支
- 每个 release 版本只要源分支出现就有可用的翻译,并开始新版本翻译工作
- 官方的原生修改无需 review 代码审查,避免合并多个分支造成代码审查必须处理官方正常的变更
- 应用上一版本的翻译提交可以简单审查;因为只是“正确”的提交,而不是可能有人工参与的合并(隐含冲突处理)
- 应用上一版本的翻译的冲突 .rej 实际上是当前版本翻译的 todo,可以多人协作处理,而不用等待某次冲突处理合并完成再开始
- 如果资源足够,多个大版本的翻译可以并行;并且仍然可以通过 patch 在各分支中共享
缺点:
- patch 会丢掉原始的提交信息;新版本分支的 blame 审查将找不到原始的作者
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
支持你!兢兢业业
The Incutio XML-RPC PHP Library -- WordPress/4.2.2
[…] 期间因为 Google Code 的关闭,PuTTY 直接转移到 GitHub,同时也开始采用 GitLab 的本地化工作流。 GitLab 跳过了好几个版本,包括一个未完成的 7.8 版本。其中 7.8 升级到 7.9 […]