Hatena::ブログ(Diary)

temitaの不思議空間

2013-05-22

gitをいきなり覚えようとする人の疑問あるある載せてく

20:30 | gitをいきなり覚えようとする人の疑問あるある載せてく - temitaの不思議空間 を含むブックマーク

2013/05/22 git

いきなりバージョン管理ツールに触れて、gitを理解しようとしてる人に関するあるある。挙げてく。
気軽に理解したい人向け。

gitってgithubとか聞くやつ?」
残念ながら、gitgithubは別物です。
git分散型バージョン管理ツールです。
github はコードをgitを通して共有したり公開するためのサービスです。

githubないとgit使えないんでしょ?」
うれしい事に、gitはパソコン1台から始めれます。
github の登録は必要ないですが、gitインストールは必要です。

gitは複数人でsvnは1人用なんですか?」
うれしい事に、gitは1人でも複数人でも利用できます。

「複数人で使う時以外はgitは必要ないんでしょ?」
うれしい事に、1人でも十分効果的な(コード復元など)使い方ができます。

「まずは、GUIから始めたいんですけど」
残念ながら、GUIは大抵 git を理解している人前提に作られてます。
GUI専用用語が増えて混乱する場合があります。

「コマンド多すぎて覚えられない」
残念ながら、自由度が広すぎて全部のコマンドを覚えるのは難しいです。
やりたい事から検索するのがいいです。

「cloneとかno-ffとかpushとかpullとかfetchとかmergeとかrebaseとかとか、全部覚える必要は・・?」
clone, push は良く使いますが、それ以外は他人のコードを持ってきたりするときに必要です。
必要なときに調べて使えばいいですが、no-ff は先に調べて追加する癖をつけておくといいかもです。

「用語が多すぎて覚えられない」
残念ながら、自由度が広すぎて全部の用語を覚えるのは難しいです。

「リモートリポジトリ、branch, HEAD, ref, master, origin, bare...」
うれしい事に、用語を知らなくても使うことはできます。後から理解しても遅くありません。

「PUSHとかあるけど、1人開発の場合はどこにPUSHすんの?」
1人開発の場合はPUSHは無くてもかまいません。

「あなたの日常的に使う重要なコマンドおしえて」
`git add -p' #変更を細かく追加
`git diff --cached' ##何を追加したか忘れるので確認
`git commit -m "fix typo username bug" ' #登録(コミット
のループ
その他は前のを戻したり、PUSHしたり、分けたり、できるんだけど、そのたびに検索

「操作方法の図がループしてあるけど、どこからがスタートなの?」
初期化(init)またはコードを持って来る(clone)後は、`git add' から始まります。

「最新の使い方を覚えたいんだけど」
git-flow で検索するとスマートな使い方を知ることができます。

ここまで。
気付いたら追加していこうかな。

2012-01-22

WindowsでRspecでautotestする

16:54 | WindowsでRspecでautotestする - temitaの不思議空間 を含むブックマーク

Rubyでの話。やっぱり保存したら自動でテストを行ってくれて画面隅に結果を出したいよね。
ということです。今回は参考が少なくて戸惑いどころも多いWindowsでやってみたいと思います。
テストって面倒ですよね。

みどころ

Windows環境
rspecの導入
自動でテスト
画面端ポップアップ表示
たぶん他の環境でも動く

導入

使用ライブラリ
  • gem install rspec
    • これはテストに必要
  • gem install ZenTest
    • これはautotestに必要
  • gem install autotest-growl

準備

テスト前に準備作業を強いられているんだ!(集中線)

Growlの準備

ポップアップ表示だけのソフトウェアです。
これがあるとツイッター風にテストを表示できます。
GrowlforWindows
からダウンロードしてsetup.exeを実行してください。いらないなら飛ばしてもおkです。

Rspecの準備と実行

Rspecを使う為にはテストファイルを作る必要がある。
foo.rb でファイルを作っているならば、foo_spec.rb というテストファイルを作る。
では手動で実行。rspecで検索をかければ foo_spec.rb の書き方は分かると思う。
こことか参考に
慣れていなければ、同じフォルダに一緒だと失敗しにくい。かも。

PS P:\kusoge\myProject> rspec .
〜〜〜〜
Finished in 0.038 seconds
2 examples, 1 failure

Failed examples:

rspec ./spec/foo_spec.rb:10 # Main test arue


Finished in 0.038 seconds
2 examples, 1 failure
あらら、2個実行して1個テスト失敗してますね。成功です。

autotestの準備

次にautotestでファイルを書き換えるたびに自動でテストを実行します。
自動テストは当然先程のRspecのテストを使ってくれないと困ります。
まず、.autotest という自動実行の設定ファイルを作ります。

in MyProject/.autotest

# -*- ruby -*-
# require 'autotest/autoupdate'
# require 'autotest/bundler'
# require 'autotest/isolate'
# require 'autotest/once'
# require 'autotest/rcov'
# require 'autotest/restart'
# require 'autotest/timestamp'
require 'autotest/growl' #ポップアップしたいなら必要

# Autotest::AutoUpdate.sleep_time = o
# Autotest::AutoUpdate.update_cmd = o
# Autotest::Isolate.dir = o
# Autotest::RCov.command = o
# Autotest::RCov.pattern = o
# Autotest::RCov.options = o

Autotest.add_discovery do
"rspec"
end

Autotest.add_hook :initialize do |at|
at.add_mapping(/([\w0-9]+)\.rb$/) do |f, matched|
"#{matched[1]}_spec.rb"
end
end

使いたいプラグインをここで決めるらしいです。
add_hookでは _spec.rb ファイルをすべてテスト実行させると書いてます。

自動実行

さぁ自動実行ですよ。ここでWindowsでは注意が必要です。
ちょっと前では
autospecとかいう機能があったのですが廃止されました。
なのでautotestにRspecテストだということを教える必要があります。

linuxではautoテストで実行する前には

RSPEC=true autotest

とかでも出来たのですが、Windowsでは

autotest --style rspec2

でうまく動きます。

まとめ?

ファイルを書き換えるたびに自動でテストしてポップアップ表示ができる?。
テストってこんなに簡単?。
使用ライブラリgemGrowlなので、少し書き換えたら他の環境でも動きます?。
なにか足りてない気がするけど、気にしない。