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 可交替进行互不影响。原则上,新的大版本工作开始之后就不再维护旧版本分支的翻译;即,只翻译最新的内容。

优点:

  1. git 版本树干净;确保翻译分支会污染原有分支和其他的翻译分支
  2. 每个 release 版本只要源分支出现就有可用的翻译,并开始新版本翻译工作
  3. 官方的原生修改无需 review 代码审查,避免合并多个分支造成代码审查必须处理官方正常的变更
  4. 应用上一版本的翻译提交可以简单审查;因为只是“正确”的提交,而不是可能有人工参与的合并(隐含冲突处理)
  5. 应用上一版本的翻译的冲突 .rej 实际上是当前版本翻译的 todo,可以多人协作处理,而不用等待某次冲突处理合并完成再开始
  6. 如果资源足够,多个大版本的翻译可以并行;并且仍然可以通过 patch 在各分支中共享

缺点:

  1. patch 会丢掉原始的提交信息;新版本分支的 blame 审查将找不到原始的作者

2 Responses to “GitLab 汉化工作流”

  1. zion说道:
    Google Chrome 41.0.2272.101 Mac OS X  10.10.2
    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

    支持你!兢兢业业

  2. WordPress 4.2.2
    The Incutio XML-RPC PHP Library -- WordPress/4.2.2

    […] 期间因为 Google Code 的关闭,PuTTY 直接转移到 GitHub,同时也开始采用 GitLab 的本地化工作流。 GitLab 跳过了好几个版本,包括一个未完成的 7.8 版本。其中 7.8 升级到 7.9 […]

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据