Redmine
とりあえずメモだけ。
きちんと理解していないので、あてにしないでね。
詳しいことは後で調べる。
そういえば前回のPHP勉強会でもネタが挙がっていたのを思い出した。
自己紹介
全員の自己紹介
セッション始め
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した後、ブランチを消すといった使い方ができ、論理的な意味のある奇麗な一個のコミットに纏められる。
ActiveRecord without Rails
あれ?話しありました?