«前の日記(2013-03-08) 最新 次の日記(2013-03-21)» 編集

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2013-03-13 github

FreeBSD ports tree の更新を portsnap から git (github) に変更

FreeBSD の ports tree の更新を行うには portsnap(8) を使うのが簡単で安全で速く一般ユーザとしてはこれを使っていれば十分です。

しかし、いくつかの ports のメンテナをやるようになってから、最近は何が更新されたのか知りたいことが多く freshports などをでコミットメッセージを参照することが増えていました。 どうせコミットメッセージを見るなら手元にリポジトリをチェックアウトしたほうが速いということで ports tree の更新を git を使うように変更したときの手順とかをメモしておきます。

オフィシャルの ports tree の Subversion リポジトリは svnweb.freebsd.org にあります。 実際にリポジトリをチェックアウトするには

# rm -rf /usr/ports ; mkdir /usr/ports

とかで既に portsnap などを使用して取得した /usr/ports 以下を適当な方法でクリアしてから

# svn co svn://svn.freebsd.org/ports/head/ /usr/ports

でOKです。

今回はいくつかの理由があって手元のリポジトリを git にしたいと思い、最終的に github から clone することにしました。

  • ローカルにブランチを切って切り替えたい(ことがあるかもしれない)
  • svn log はデフォルトでページャを経由しないが git log は経由する(.subversion/config を書くのが面倒)
  • PR を出すためにパッチを作る場合などで作業中のファイルを stash できたら嬉しい
  • svn より git のほうが速そう

というわけで

# git svn clone http://svnweb.freebsd.org/ports/head/ /usr/ports

と実行したところで気が付きました。最初の git-svn clone はすごく遅いので特定のリビジョン以降に絞ったりしないと待ってられない。

そこで github にも FreeBSD ports tree のリポジトリがあることを思い出し、こちらから取得することにしました。2013年2月で CVSup による ports tree の配布が終了したこともあり、FreeBSD の Subversion リポジトリのミラーがどれくらいの数存在するのか不明だったことも github を選択したことに関係あります。github ならちょっとやそっとアクセスが集中してもちゃんと捌けるくらいのインフラはありそうですね。

今回は /usr/ports/distfiles や /usr/ports/packages は削除したくなかったので、以下の手順でリポジトリを取ってきました。

# cd /usr/ports
# rm -rf `ls | egrep -v "distfiles|packages"`
# rm -rf .svn
$ cd /tmp
$ git clone git://github.com/freebsd/freebsd-ports.git
# cp -r /tmp/freebsd-ports/* /usr/ports
# cp -r /tmp/freebsd-ports/.git /usr/ports

これは、git は空のディレクトリにしか clone できないためです。

ここまでやれば、ports tree の更新は /usr/ports で git pull するだけでOK。コミットログを見るときは、例えば chromium のコミットログが見たければ以下のように。

$ git log /usr/ports/www/chromium

どのファイルが変更されたのかを見たければ CLI の git フロントエンドの tig を使います。

$ tig /usr/ports/www/chromium

こんな感じで svn より高速に、負荷を気にしてミラーサーバを選ぶ必要なく快適に ports tree を変更履歴付きで最新に保てました。

そういえば portsnap.freebsd.org はいつのまにか Amazon EC2 でホスティングされるようになっていたので portsnap を使う限り、こちらもミラーを選ぶ必要はなくなってきているのかもしれません。

FreeBSD Ports Collection に GIMP 2.8 登場

本家リリースから10ヶ月、ports に GIMP 2.8 が来ましたね。

3年半ぶりのメジャーバージョンアップで、目玉機能はシングルウィンドウモード。早速入れて使って見ましたが、かなり使いやすくなってます。

本日のツッコミ(全1件) [ツッコミを入れる]
Σ meta (2013-03-31 21:24)

書き忘れてたけど git pull した後 make fetchindex が必要です。