1. quattro_4

    No comment

    quattro_4
Changes in body
Source | HTML | Preview
@@ -1,105 +1,104 @@
-すべてのgitユーザーにおすすめのhook
-
-`debugger`や`console.log`などコミットするべきではないものをコミットすることはありませんか?
-もしくは他のメンバーがコミットしていてイラッとしたことはありませんか?
-
-そんな時はgitのhook(pre-commit)を使います。
-
-以下はこのhookを使うための準備です。
-[gitのhooksを管理する(自分用テンプレートを使う)](http://qiita.com/items/59fdf8b9aa9ef48ecbdf)
-[git hookでできること](http://qiita.com/items/d8a8d498c9f853a445f5)
-
-pre-commitのコードは以下の通り(ruby)
-
-**`checkes`の内容を変えて、自分のチェックしたいコードを追加できます。**
-
-```ruby:pre-commit
-#!/usr/bin/env ruby
-
-class String
- # colorization
- # from http://stackoverflow.com/questions/1489183/colorized-ruby-output
- def colorize(color_code)
- "\e[#{color_code}m#{self}\e[0m"
- end
- def red ; colorize(31) ; end
- def green ; colorize(32) ; end
- def yellow ; colorize(33) ; end
- def pink ; colorize(35) ; end
-end
-
-
-checks = %w{
- debugger
- logger
- puts
- binding.pry
- save_and_open_page
- console.log
-}
-
-errors = []
-
-files_changed = `git diff --cached --name-only HEAD`
-files_changed.each_line do |filename|
- filename.chomp!
- changes = `git diff --cached -U0 HEAD -- #{filename}`
- checks.each do |check|
- result = changes.split(/
-/).grep(/^\+.*\b#{check}\b/)
- unless result.empty?
- errors << {:name => check, :file => filename, :matches => result}
- end
- end
-end
-
-unless errors.empty?
- errors.each do |error|
- puts "'#{error[:name]}' found in file: #{error[:file]}".yellow
- error[:matches].each {|m| puts " -> #{m}" }
- end
- puts "COMMIT REJECTED. Please remove them before commiting OR use --no-verify".red
- exit 1
-end
-```
-
-
-使うにはとにかく各プロジェクトの`.git/hooks/`配下に`pre-commit`を配置し、実行権限を与えれば動きます。
-(権限重要で実行権限が無いと、何も起きない)
-
-```bash:
-$ cd rails_project
-$ cp /somewhere/pre-commit .git/hooks/
-(OR $ vi .git/hooks/pre-commit)
-$ chmod 755 .git/hooks/pre-commit
-```
-
-デバッグコードを含むコードをコミットしようとすると
-
-```bash:
-$ git commit
-'debugger' found in file: app/controllers/posts_controller.rb
- -> + debugger
-'puts' found in file: app/controllers/posts_controller.rb
- -> + #puts params.inspect
-COMMIT REJECTED. Please remove them before commiting OR use --no-verify
-```
-
-のように出力されます。
-
-**一時的にチェックを無効にしてコミットしたい場合は**
-
-```bash:
-$ git commit -m "Commit without checks" --no-verify
-```
-
-
-git hooksはプロジェクトごと.git/hooksにありますが、既存の数あるプロジェクトで有効にするには少し手間がかかります。
-詳細は[gitのhooksを管理する(自分用テンプレートを使う)](http://qiita.com/items/59fdf8b9aa9ef48ecbdf) 参照
-
-
-デバッグコードはproduction環境であっても比較的無害な気はしますが、一度Javascriptのコードがconsole.logのせいで動かなかったことがあります。(特定のレガシーブラウザで起こった)
+すべてのgitユーザーにおすすめのhook
+
+`debugger`や`console.log`などコミットするべきではないものをコミットすることはありませんか?
+もしくは他のメンバーがコミットしていてイラッとしたことはありませんか?
+
+そんな時はgitのhook(pre-commit)を使います。
+
+以下はこのhookを使うための準備です。
+[gitのhooksを管理する(自分用テンプレートを使う)](http://qiita.com/items/59fdf8b9aa9ef48ecbdf)
+[git hookでできること](http://qiita.com/items/d8a8d498c9f853a445f5)
+
+pre-commitのコードは以下の通り(ruby)
+
+**`checkes`の内容を変えて、自分のチェックしたいコードを追加できます。**
+
+```ruby:pre-commit
+#!/usr/bin/env ruby
+
+class String
+ # colorization
+ # from http://stackoverflow.com/questions/1489183/colorized-ruby-output
+ def colorize(color_code)
+ "\e[#{color_code}m#{self}\e[0m"
+ end
+ def red ; colorize(31) ; end
+ def green ; colorize(32) ; end
+ def yellow ; colorize(33) ; end
+ def pink ; colorize(35) ; end
+end
+
+
+checks = %w{
+ debugger
+ logger
+ puts
+ binding.pry
+ save_and_open_page
+ console.log
+}
+
+errors = []
+
+files_changed = `git diff --cached --name-only HEAD`
+files_changed.each_line do |filename|
+ filename.chomp!
+ changes = `git diff --cached -U0 HEAD -- #{filename}`
+ checks.each do |check|
+ result = changes.split(/
+/).grep(/^\+.*\b#{check}\b/)
+ unless result.empty?
+ errors << {:name => check, :file => filename, :matches => result}
+ end
+ end
+end
+
+unless errors.empty?
+ errors.each do |error|
+ puts "'#{error[:name]}' found in file: #{error[:file]}".yellow
+ error[:matches].each {|m| puts " -> #{m}" }
+ end
+ puts "COMMIT REJECTED. Please remove them before commiting OR use --no-verify".red
+ exit 1
+end
+```
+
+---
+
+使うにはとにかく各プロジェクトの`.git/hooks/`配下に`pre-commit`を配置し、実行権限を与えれば動きます。(権限重要で実行権限が無いと、何も起きない)
+
+```bash:
+$ cd rails_project
+$ cp /somewhere/pre-commit .git/hooks/
+(OR $ vi .git/hooks/pre-commit)
+$ chmod 755 .git/hooks/pre-commit
+```
+
+デバッグコードを含むコードをコミットしようとすると
+
+```bash:
+$ git commit
+'debugger' found in file: app/controllers/posts_controller.rb
+ -> + debugger
+'puts' found in file: app/controllers/posts_controller.rb
+ -> + #puts params.inspect
+COMMIT REJECTED. Please remove them before commiting OR use --no-verify
+```
+
+のように出力されます。
+
+**一時的にチェックを無効にしてコミットしたい場合は**
+
+```bash:
+$ git commit -m "Commit without checks" --no-verify
+```
+
+--------------------------------
+
+git hooksはプロジェクトごと.git/hooksにありますが、既存の数あるプロジェクトで有効にするには少し手間がかかります。
+詳細は[gitのhooksを管理する(自分用テンプレートを使う)](http://qiita.com/items/59fdf8b9aa9ef48ecbdf) 参照
+
+---
+
+デバッグコードはproduction環境であっても比較的無害な気はしますが、一度Javascriptのコードがconsole.logのせいで動かなかったことがあります。(特定のレガシーブラウザで起こった)
個人的にはデバッグコードをあまりに頻繁にコミットしてプッシュまでしてしまう人は、不注意だったりコードの読みやすさ・コミットの作り方の意識が低いのかなと思う。(それだけバグも作りやすい人)