Boost.勉強会 #11 東京 に参加しました

久しぶりのboost勉強会でした。 早速ですが、レポートというかメモというかをドーゾです。

… 続きを見る

初めてのForkとFuelPHP 1.6 翻訳ウィーク参加(追記あり)

FuelPHP 1.6 が公開されたのを記念?してまた FuelPHP 1.6 翻訳ウィーク : ATND が行なわれるとのことなので参加してみました。

とりあえず、FuelPHP ドキュメント翻訳へのお誘いとかFuelPHP の日本語ドキュメントを 5分で修正するを参考に自分はgithubのクライアントを基本に翻訳してみることにしました。

さあ、とりあえず翻訳できたし、とりあえずコミットしてみるかってんでコミットしてみたらここで事件発生! なんか全行削除されて全行追加された感じになっていました。

全行変更あり

※そのままgithubにまでコミットしてしまい大変になったのはまた別の話。

で、ピンときて元を確認してみると案の定、改行コードがCrLfではなくLfだった。

githubクライアント設定

設定を確認すると .gitattributes で指定できるっぽいけど、、、余計なファイルを入れたくないなーと思って探してみたらどうも git コマンドで設定ができるっぽい。

見つけたページ Dealing with line endings - GitHub Help を参考に Git Shell 起動して

git config --global core.autocrlf false

としてやると改行コードが勝手に変わるのが直った。

デフォルトが改行コードを変更するようになってるなんてヒドイorz

で、いろいろ翻訳して Pull Request をしてみてさあマージされたと思って、、、あれ?更新を取り込むにはどうしたら?と思ったので試行錯誤をしてフォーク元から変更を取り込みました。

試行錯誤した後でGitHubへpull requestする際のベストプラクティス - hnwの日記などを見つけてorz状態になったけどとりあえず後で考えるようにした。

なので以下に書かれているのは良くない方法ではあると思うので参考にしてはいけないのです。

とりあえず、githubクライアントでcloneするとう upstream って名前はあるけどURLが指定されていないようです。

$ git remote -v
origin  https://github.com/sharkpp/FuelPHP_docs_jp.git (fetch)
origin  https://github.com/sharkpp/FuelPHP_docs_jp.git (push)
upstream

で、URLを指定します。

$ git remote set-url upstream https://github.com/NEKOGET/FuelPHP_docs_jp

ここからは行儀が良くないやり方。 Pull Request で余計な変更が含まれたりしてしまいます。

フォーク元から変更を取り込みます。 --rebase を付けるのがポイントのようです。

$ git pull --rebase upstream 1.6/develop_japanese
From https://github.com/NEKOGET/FuelPHP_docs_jp
 * branch            1.6/develop_japanese -> FETCH_HEAD
First, rewinding head to replay your work on top of it...

そして、変更をプッシュ。

$ git push -f origin 1.6/develop_japanese
Counting objects: 222, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (140/140), done.
Writing objects: 100% (185/185), 27.32 KiB, done.
Total 185 (delta 127), reused 77 (delta 45)
To https://github.com/sharkpp/FuelPHP_docs_jp.git
 + d1c090c...214104c 1.6/develop_japanese -> 1.6/develop_japanese (forced update)

あとは、思うように翻訳して、githubクライアント上で commit & sync 。 そして、github上で Pull Request です。

git fetch とか git merge とかやってみたけどひどいことになりながら↑のやり方にたどり着きました。

まあ、もっとましなやり方を覚えないと、ですが、、、、順番になれていきたいです。

参考:


初めてのPHPバグ報告

先日、といっても一ヶ月以上前ですが、PHP :: Bug #64699 :: is_dir() is inaccurate result on Windows with japanese locale. としてPHPのバグ報告を初めてしてみました。

PHPへのバグ報告の手順 - hnwの日記PHP :: How to Report a Bug などを参考に報告しました。

で、いつの間にかコメントがついていました。

まあ、結局のところ PHP :: Bug #61315 :: stat() fails with specific DBCS characters として(or他もろもろで)重複したものが登録されていたようですorz

毎回思うに、重複とかはどうやって確認するんだろう?ってところでバグの報告とか躊躇してしまうんだよなー  そこまで気にする必要はないのかもしれないけど、、、

コメントでは、パッチ当てるか php-wfio - Unicode filename support for PHP 5.4 on Windows - Google Project Hosting 使ってみてって書かれてたのでphp-wfioを試してみました。

が、、、うまく動かないのでソースとか fopen or such with UTF-8 filepath - PHP under Windows とか見てみるとis_dir()実装してないから動くわけないじゃん、、、

パッチ当てれば動くかもって話もあるんだけど、、、そこまでは現状困ってない(本番環境はLinux)のでまあ、phpがUnicode対応したらそのうち直るだろうから気長に待つとするかな。 一瞬、php-wfioの実装を見て、そうか!phpの拡張でmbstringみたいに標準関数をoverloadすればできるかも?とか思ったのは秘密だ。

これ、問題はFuelPHPの方どうするかなー? is_dir()は意図しない動きするけどfiletype()は意図する動きなんだよなー、、、まあ、filetype()がうまく動いているのも偶然かもしれないけど、、、

まあ、ってなわけで初めてのバグ報告はすでに同じものが登録されていましたってことで、、、、報告済みのバグをよく確認しましょうってことで終了、、、かな?