どうも、タカフです。
最近とある海外のとある技術ドキュメントのあるサイトの日本語翻訳版サイトを作ろうと試みているのですが、どのように進めるか大変悩んでました。
その悩みどころは、日本語翻訳サイトを作成後にその英語版サイトの更新をどのように取り込むか。
この悩みの解答を先に言ってしまうと、この技術ドキュメントの海外サイトがGitHubに登録されていましたので、
GitHub上でForkしてからgit remote にその英語版サイトのリポジトリを追加し、更新があったら都度pullなんですが、恥ずかしながらForkってあまりやったことなかったのでこれを機会に記事にしたいと思います。
この記事では、fork元のリポジトリを
https://github.com/superoriginal/english-website.git
forkを取り込む自分のリポジトリを
https://github.com/myusername/japanese-website.git
としたいと思います。
英語サイトを自分のリポジトリにForkする
これぞ、ザ・オープンソースって感じですね。
Forkするのは非常に簡単で、これから開発したいリポジトリの右上にあるForkボタンを押すだけです。
これだけで今GitHubログインしている自分のリポジトリに追加されます。
この後ローカルにcloneして開発していきますが、自分用にカスタマイズ開発していくわけですので名前を変えた方がいいですね。
Forkした自分のリポジトリのSettingsを開いて、Renameのところでリポジトリ名を変更できます。ここでは便宜上japanese-websiteとしておきます。
Forkして取り込んだリポジトリをローカルにcloneする
いつものよくやるコマンドですね。先程Forkしたリポジトリをcloneします。
> git clone https://github.com/myusername/japanese-website.git
> cd japanese-website
本家サイトの方に更新があったら取り込めるようにgit remote先を追加
リモート先として本家サイトのリポジトリを追加します。ここでは、上流という意味で upstream
としておきます。
> git remote add upstream https://github.com/superoriginal/english-website.git
リモート一覧を確認してみると追加されているのを確認できます。
> git remote -v
origin https://github.com/myusername/japanese-website.git (fetch)
origin https://github.com/myusername/japanese-website.git (push)
upstream https://github.com/superoriginal/english-website.git (fetch)
upstream https://github.com/superoriginal/english-website.git (push)
git pushしてもあくまで自分のリポジトリに対してpushするので安心ですね。
更新があったらgit pull [英語サイトのリポジトリ]
本家サイトの方で更新があったらgithub上でWatchしてで通知できるようにしときます。
先程のForkボタンの左の 目のボタン からどのようにWatchするか選択できます。頻繁に更新を追従したいならWatchingでもいいかもしれません。
上述の設定で追従リポジトリの設定はOKなので、実際更新の通知があったらpullしていきます。
> git pull upstream master
これで本家サイトの更新の差分ソースを比較的お手軽に持ってこれると思います。
あとは自分用のカスタマイズはなるべく本家サイトのソースを汚さないことですかね。
現場からは以上です。