理想未来ってなんやねん

娘可愛い。お父さん頑張る。

Redmine

とりあえずメモだけ。
きちんと理解していないので、あてにしないでね。
詳しいことは後で調べる。
そういえば前回のPHP勉強会でもネタが挙がっていたのを思い出した。

自己紹介

全員の自己紹介

セッション始め

Redmine

Rubyで書かれたプロジェクト管理ツール。
Tracみたいなもの
Ruby on RailsMySQLを使用。

本家
http://www.redmine.org/

Git

最近話題になっている分散バージョン管理システム
Linuxカーネルのバージョン管理の為に作成された。

GitはSubversionよりマージが便利
SVKと変わらないので、SVKを使っている人であれば戸惑うことはないでしょう
ちょっとマージが便利なSVK

git clone git://github.com/yugui/redmine4ruby-lang.git

リモートのリポジトリの完全なるクローンを作ってくれる
masterは慣習的な名前なので好きな名前にしてよいのですが、逆らう必要はないのでそのまま使った方が良い

.gitの中に管理情報をもつ
subversionと違ってサブディレクトリの中に管理情報は作らない

Objectデータベース
objectディレクトリの下に管理されている。
古くて使わない情報は圧縮して効率よく管理してくれる

git prune

で、参照していないオブジェクトを削除してくれる
マニュアルには参照していない情報も取っておけば良いじゃんと書いてある。

treeというのはある時点のスナップショットに過ぎない
commitがcommitをずっと参照する。
個々のcommitは存在する限りSHAでハッシュされたIDで参照できる。

git show HEAD~

~が一つ前を表す

subversionはtagを作る毎に操作が残るので気軽にできない。
gitはオブジェクト操作を気軽にできる。

ブランチといっても一口でいって色々ある。
ワーキングブランチはメインストリームにマージしたら破棄しても構わないだろう。


git branchで気軽にブランチを作成できる。
git add ...でこれから何をコミットするか指示する

git diff HEAD~ 

一つ前との比較

git show HEAD -- filename

commitしてもローカルにコミットしたに過ぎない
git pushしてやれば取得したリポジトリにコミットできる
うまいことマージしてくれるのでSubversionでマージに苦しんだ人には嬉しい。

git svn

svnのブランチをマージする

git merge branchname
git reset --hard HEAD

ローカルにコミットしたものを戻したい場合

git reset --hard HEAD~

子は親を知っているが、親は子を知らない。
参照されなくなり、静かに消えていく。
参照されなくなったオブジェクトを復活されたい場合は

git fsck

を使うと、参照されなくなった迷子のオブジェクトを列挙してくれる。

最後の安定コミットまで戻すことができ、途中の汚いコミットは無かったことできてリポジトリが汚れないのでセーブする感覚で気軽にコミットできる。
この機能を追加したいというときはブランチを切って、コンパイル通らない状態のようなものでもセーブする感覚でcommitして、マスターにcommitした後、ブランチを消すといった使い方ができ、論理的な意味のある奇麗な一個のコミットに纏められる。

GitHub

gitのホスティングサービス
Railsで書かれている割といい感じのUIが特徴

ActiveRecord without Rails

あれ?話しありました?