トップ «前の日記(2009-04-01) 最新 次の日記(2009-04-03)» 編集

Route 477



2009-04-02

[misc] 今週末は東京にいることになりました

4/4(土)午後と4/5(日)です。(月曜は仕事)

なんか面白いイベントないですかねー。

[biwascheme][git] git submodule(SVNの外部参照みたいなやつ)を使ってみた

動機

biwaschemeを使ったアプリケーション(以下tickets) を書いているのだが、利用者にとってみると、ticketsとbiwaschemeという 2つのリポジトリをcloneしないといけないので面倒。

さらに、ticketsで必要になった機能をbiwaschemeに随時追加したりしているので(例:R6RS hashtable)、 2つのリポジトリを同時にcloneしないと依存関係が合わなくて動かない。これは面倒。

解決法

ticketsのリポジトリにおいて、biwaschemeをサブモジュールとして登録する。

submoduleはサブディレクトリで普通にgit cloneするのと近い感じだけど、ticketsの各コミットと、「その時使っていた biwaschemeのバージョン」が対応付けられるので、上のような依存問題が発生しない。

手順

まずticketsの側で

git submodule add git://github.com/yhara/biwascheme.git

とした。これで、biwascheme/ 以下にリポジトリbiwaschemeのファイルがcloneされる。git ci でこの変更をコミットする。

あとは、tickets/biwascheme/以下でgit pullすることで、サブモジュールを最新版に更新できる。 が、これはtickets内の変更とも見なされるので、tickets側で「biwaschemeを最新のものにした」ということをコミットしなければならないようだ。

制限

  • tickets/biwascheme/ 以下で作業を行ったときは、tickets側でpushする前にtickets/biwascheme/以下をコミットしてpushしておかなければならない…らしい。
  • 利用者がticketsをcloneする場合、サブモジュールは自動では取ってこないので、git submodule init; git submodule updateが必要。
本日のツッコミ(全2件) [ツッコミを入れる]
mokehehe (2009-04-07 05:37)

add と submodule は逆でしょうか?<br>msysgitで試したところ、最後に持ってくる名前?を入れる必要がありました<br>git submodule add git://github.com/yhara/biwascheme.git biwascheme

yhara (2009-04-07 17:22)

git submodule addが正しいです。直しておきました。