研究の全てをgitで管理してたら( ・∀・)イイ!!

ここ1ヶ月半くらいかな,研究データの全てをgitで管理してみるようにしました.

画像系の研究なので,テスト画像だったり,テスト画像毎の処理結果だったり,実験を走らせるためのスクリプトだったり,プログラムだったり.
今まではreadme的なテキストファイルに「これはいついつこういう目的でやった実験だよ!(>ヮ<*)」と書いてるだけだったんですが,時間軸方向の管理能力には限界があったのです.

全てをひとつのリポジトリにぶっ込むとリポジトリが肥大化しすぎて(それこそ画像数万枚の実験を何百回となく行うので,バイト数でいうとLinuxカーネルどころじゃない),速度的にさすがに問題が出てくるので,ひとまとまりの実験をひとつのリポジトリにして,全体はsubmoduleとして管理します.
特定の実験のためのアドホックなプログラムはさらにそいつのsubmoduleで,みたいな.

まだ日は浅く管理してる要素の数もそれほどですが,
ドジっ子おさかなさんはしょっちゅう実験ミスするので,こういう形であらゆる実験結果を検証できるようにしておくと非常によいです.

みなさんもいかがでしょうか?

ハードリンクはgitでは…

ファイルAをgitリポジトリに置いて,AのハードリンクBも同じリポジトリに置きます.
んで,Aを変更したら?

ハードリンクって何…と知ってたらそのまんま予想通りなかんじ.
そのまんまです.はい.なにも不思議なこともなければ面白いこともありません.

% git init
Initialized empty Git repository in /○○○○○/.git/
% echo "hogehogehogehoge" > hello.txt                        #一つ目のファイルを作ってコミットします
% git add hello.txt
% git commit -m "hello.txt"
[master (root-commit) acee5b5] hello.txt
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 hello.txt
% ln hello.txt hello2.txt                                    #ハードリンクを作ります
% git status                                                 #新しいファイルが追加されたことに
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       hello2.txt
nothing added to commit but untracked files present (use "git add" to track)
% git add hello2.txt                                         #ハードリンクもコミットします
% git commit -m "hello2.txt"
[master bd15fe1] hello2.txt
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 hello2.txt
% echo "fugafuga" >> hello.txt                               #一つ目のファイルをちょっと変更します
% git status                                                 #変更は検出されたでしょうか
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   hello.txt
#       modified:   hello2.txt                               #もちろん二つ目のほうのファイルも変更されたことになります
#
no changes added to commit (use "git add" and/or "git commit -a")

くそおもしろくない記事でごめんなさい.
そもそもgitだからどうのっていう話ですらない.これはひどい.

GitoriousをUbuntu 11.04 Serverにインストール

GitHubクローンの代表格なGitホスティングサービスGitorious,今では例えばQtもホスティングされています.
このシステムをまるごと自分のWWWサーバに入れて,ユーザ数やプロジェクト・リポジトリ数,非公開設定まで無制限な,WEBベースのリポジトリ管理システムを構築することができます.

タイミング悪いですね

もともとMarcurialホスティングサービスなBitbucketがGitに対応して,無料アカウントでもユーザ数5人まで,公開/非公開・数・容量共に無制限のGitリポジトリを置けるというとんでもないサービスが始まりました.
何と言うことでしょう.やっぱ外に置くのは不安じゃんって人もいるでしょうけど,それにしても今日の記事は無駄になるのでしょうか.

ビルドサーバとしてfook書いてCIと連携したりできるシステムを構築するところまですれば,差も出るのかもしれません.
そこまでするならRedmineでも入れましょう.

都合の悪い話はおいといて話を進めることにしましょう><。。

Continue reading

リモート上で動いてるWordPressテーマの修正の同期をさくっとやりたい(gitで)

ブログをさくらVPS上に移転、そしてこのサブブログの新設する際、ネットで見つけたCreative CommonなWordpressテーマを多くの微調整を加えた上で採用しました。

微調整はgitで管理します。

最初はローカルマシンにWordpressを導入してその上で修正作業を行い、完成したものを(.gitごと)丸めてscpしリモートへ送りました。

たぶんまだテーマの微調整は生じると思います。
sshでvimで変更してっても悪くはないんですが、稼動状態にあるものをその場でいじっていくってのは非常によろしくない。

なので、微調整の作業は、リモートから落とす→修正→リモートへ反映 というサイクルを繰り返すことになります。
これを手作業でするのが気持ち悪いので、gitのDVCSとしての機能を生かして、さくっと同期できたらいいなぁ、という話。

Continue reading