Open Source 版 fastladder を check out する際に、そのまま Subversion で check out するのではなく、 git-svn を使ってローカルでもバージョン管理をしたいと思ったときの、作業記録(開始手順)。
各行は、「% で始まる行 - コマンド入力」、「# で始まる行 - コメント」、「それ以外 - コマンド実行結果出力」の 意味となっている。
% cd ~/work
% git svn clone -T trunk -b branches http://fastladder.googlecode.com/svn fastladder
# * ~/work/fastladder/ を作成し、ファイルを取得する。全リビジョンを取得するため少し時間がかかる。
# リビジョンが多くて時間がかかる場合は、-r HEAD オプションを追加することで、最新リビジョンのみ
# 取得することができる(そのかわり変更履歴は参照できなくなる)。
# * ここでは Subversion レポジトリにおけるブランチ格納場所が branches (-b で指定)、
# トランク(幹)が trunk (-T で指定)であると指示している。
# あわせてタグ格納場所を -t で指定できるが、fastladder はまだタグを記録していないようなので、
# ここでは指定していない(そのため警告が出る)。
% cd fastladder
% ls -aF
./ Fastladder.nsi freeimage-darwin/ register_as_service.bat
../ crawler.bat image_utils-win32/ server.bat
.git/ fastladder/ migrate.bat unregister_from_service.bat
# 中には .git/ が作成され、ファイルが展開されている。
% git branch
* master
% git branch -a
* master
m17n
trunk
# 作業用ブランチである master の他、リモート取得用に m17n (← branches 以下にあったディレクトリ)と
# trunk (← トランクのディレクトリ)と言う名前のブランチが作成されている。
# (git branch -a でローカル/リモート両方のブランチが表示される)
% cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = http://fastladder.googlecode.com/svn
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
% git svn rebase
Current branch master is up to date.
# 公開リポジトリで変更があった場合は、このコマンドで取得できるはず。
今回は、読み取り専用レポジトリを check out したため変更内容はローカルで保持するだけとなる (書き換え可能であるなら多分 git svn dcommit で反映できる)。
fastladder は動かす環境が限られるソフトウエアであり、他の PC で動かしたり修正したりということはあまりないけど、 Windows と Linux など複数の環境でテストしたり、デスクトップ PC とノート PC で開発を進めたりというときには、 もう少し何かやり方を考える必要があるか。
ローカルで行っている変更は以下。
未読件数を 10 件から 400 件に変更。
fastladder/config/initializers/constants.rb の MAX_UNREAD_COUNT を変更。
Index の追加
<URL:http://subtech.g.hatena.ne.jp/cho45/20080310/1205152588>
その他、rfeedfinder の修正と、opml の修正(OPML インポート時に呼び出される処理の中の get_head_value() で camelize(:lower) がなぜかうまく動いてなかったので、camelize() した文字列と最初の1文字を自前で足す形に変更。 ActiveSupport 内の String#first() が変な動作をしているというエラーだが、opml 単体ではエラーにならず、 rails (fastladder) 内でのみエラーとなっているので詳細は追いきれていない)。