jekyllrb-ja/jekyllrb-ja.github.io — pull request #194 by melborne (2014-07-31 01:38:03+00:00)
Title: verify_original_insertionタスクの追加およびcheck_updatesのupdate

togglateタスクの機能を引き継ぐ目的で、以下の追加変更をしました。

1. verify_original_insertionタスクの追加
2. check_updatesの引数の追加

## verify-original-insertionタスク

基本的に`togglate`タスクと同じ機能（つまり翻訳ファイル内の原文がオリジナルに追随しているかを確認する）を提供するものですが、`gh-diff`をベースにしているので、出力が他のコマンドと統一される、Rakeファイル上のコードが簡潔になるという利点があります。

次のように使います。単一ファイルまたは対象ディレクトリを引数に取ります。

rake verify_original_insertion[docs/quickstart.md]

togglateタスク同様、対象ファイルに`base_revision`が埋め込まれていれば、それを読みます。無い場合は、第２引数として渡します。

rake verify_original_insertion[docs/quickstart.md,5daf987]

注）このとき各引数間にスペースを入れないでください（rakeの制約です。または全体をquoteします）。

正しく追随している場合はターミナルに以下を出力し、`exit(0)`でタスクを終了します。

no Diff on docs/quickstart.md <-> docs/quickstart.md [5daf987:]

ファイル間に相違がある場合はその相違を出力し、`exit(1)でタスクを終了します。

```bash
base_revision: 03bca72af643c1e58b5a48505a51fa3be6d76942[refs/heads/master]
--- docs/quickstart.md
+++ docs/quickstart.md

posts, using the front-matter to control templates and layouts, and taking
advantage of all the awesome configuration options Jekyll makes available.

-

-

Redcarpet is the default Markdown engine for new sites

-

In Jekyll 1.1, we switched the default markdown engine for sites
- generated with jekyll new to Redcarpet

-

-
If you're running into problems, ensure you have all the [requirements
installed][Installation].

SystemExited: Diff found on docs/quickstart.md.
```
`docs`以下のファイル群を対象にする場合は、次のようにします。

rake verify_original_insertion[docs]

何れかのファイルで相違が見つかれば、exit(1)で処理を中断します。

ほんとうはThread化したかったんですが、上手くいきませんでした :cry:
問題点はコメント化してます。> どなたか、help me!

複数のファイルに対しrevisionは固定で良い、という場合は、次の`check_updates`を使ってください。

## check_updates

`check_updates`タスクがrevisionを取れるようにしました。

rake check_updates[5daf987]

`verify_original_insertion`同様、何れかのファイルで相違があると`exit(1)`します（処理の中断はしません）。

こちらは`gh-diff`内でThread化してあり、問題なく動いているようなので、現状のようにbase_revisionがファイルごとに異なっていないケースではこちらが便利です。

ということで、差し当たり、以下のような使われ方を想定しています。

1. `check_updates`をTravis CIに組み込んでプロジェクト（リモート）側で全翻訳ファイルに対してチェックを掛ける。

2. `verify_original_insertion`を翻訳者がPR前にローカルで実行する。できれば、gitの`pre-commit`フックに組み込んで自動化したい。

ご検討のほど、よろしくです！