nDiki : ブランチ
スポンサード リンク
Related term
2004年2月18日 (水)
■ Subversion

遅ればせながらチェック。CVSから簡単に移行できるかな? ブランチの扱いが便利そう。
- vc-svn.el を使いたいので Emacs 22 に移行することにした (2006-03-25)
- ドキュメント管理用 Subversion リポジトリ作成 (2004-03-04)
- vc-svn.el / psvn.el (2004-07-30)
- connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 (2007-01-06)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
2004年3月4日 (木)
■ ドキュメント管理用 Subversion リポジトリ作成

新しく書くドキュメントを Subversion 管理してみる。 今後のドキュメントで共有(かつブランチする)マクロファイル等を分けて管理できるようにレイアウトを検討。
@ リポジトリ作成
自分の home の下 var/repos/doc を作成する。サーバ上で以下を実行。
cd ~/var mkdir repos mkdir repos/doc chgrp doc repos/doc chmod g+ws repos/doc svnadmin create repos/doc
@ 初期ディレクトリ構造作成
project-1 の report ドキュメント手始めに管理する。 今後他と共有する予定の texmf ディレクトリも別途用意。
クライアント上で以下を実行。
mkdir /tmp/layout cd /tmp/layout mkdir project-1 mkdir project-1/trunk mkdir project-1/trunk/report <-- report のファイルを置く mkdir project-1/branches mkdir project-1/tags mkdir texmf mkdir texmf/trunk mkdir texmf/branches mkdir texmf/tags mkdir texmf/trunk/texmf mkdir texmf/trunk/texmf/my-company <- 社内共有マクロファイル置き場 svn import . svn+ssh://server/home/naney/var/repos/doc \ --message 'Initial repository layout' cd rm -rf /tmp/layout
@ 外部定義プロパティを設定
report 作業ディレクトリの下に texmf/trunk/texmf を texmf として checkout するように、svn:externals を設定する。
mkdir /tmp/work cd /tmp/work svn checkout svn+ssh://server/home/naney/var/repos/doc/project-1/trunk cd trunk svn propset svn:externals 'texmf svn+ssh://server/home/naney/var/repos/doc/texmf/trunk/texmf' report svn commit cd report svn update
これで、report の下に自動的に texmf が来るようになる。 他のドキュメントプロジェクトでも同様に svn:externals を指定すれば texmf が使えるようになる。 texmf のブランチや、ある時点のスナップショットを使いたい場合は svn:externals を変更すれば良い(はず)。
- 外部定義か作業ディレクトリを分けるか、trunk にブランチか (2005-01-31)
- SVN::Webインストール失敗 (2006-02-17)
- Subversion (2004-02-18)
- Subversion で SSH port forwarding 経由での... (2006-06-29)
- 仕事のファイルを順次 Subversion リポジトリに突っ込む (2004-10-04)
2004年4月4日 (日)
■ [ WiKicker ] RCSファイルのリビジョン間引き

以前からWikiPageの編集で「連続する追記はチェックインしない」というオプションを検討している。 実装の前に「既存のRCSファイル中の連続する追記を間引く」というツール(rthin)を作って効果を検証してみた(どこかに転がってそうユーティリティだが見つけられないのでPerlで実装)。
で現在の NaneyOrgWiki で間引いてみたところ 9.5MB の RCSファイルらが 9.0MB になった。 容量的には劇的に減る訳ではないな。 リビジョン数が減るのは精神的に良いが。
これなら無理に WiKicker に実装しなくてもいいかも。 rthin をたまに走らせるだけで充分のようだ(実際にはロックを考慮しなければならないけれど)。
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- [ WiKicker ] 久しぶりにメンテナンス (2004-04-02)
- [ WiKicker ] リビジョンが追加されていかない (2003-04-22)
- [ WiKicker ] 「最近のアクセスログ」処理思案 (2004-01-17)
- [ WiKicker ] Memcached を使った検索結果のキャッシング (2004-01-15)
2005年1月31日 (月)
■ 外部定義か作業ディレクトリを分けるか、trunk にブランチか

Subversion のリポジトリのレイアウトを思案中。
repos
|
+- branches
|
+- tags
|
+- trunk
|
+- project
| |
| +- 2004
| |
| +- 2005
|
+- texmf
という構成がある。 project に年別のサブブロジェクト 2004、2005 がある。 texmf は repos 以下で共有したいマクロディレクトリ。
問題は各サブプロジェクトでどうやって texmf を共有するか。 ここで 2005 + texmf を使用する際には 2004 まで一緒に作業ディレクトリにチェックアウトしたくないとする。 texmf は各プロジェクトの共通部分で随時改良される。 これらの改良は各プロジェクトで共有したい。
ただしプロジェクトの tag を打つ場合はその時点で使用されている texmf もセットで tag を打っておき、その tag をチェックアウトする事でサブプロジェクトのセットを再構築できる必要がある。
@ 作業ディレクトリを2つチェックアウトする方法
trunk/project/2005 trunk/texmf
の2つをチェックアウトする。2005 ディレクトリからは ../../texmf で参照するようにする。
@ 利点
- texmf を一括管理できる。
@ 欠点
- 作業者が2つの作業ディレクトリをこの構成でチェックアウトすることを知っている必要がある。間違えて違うURLをチェックアウトしてしまうかもしれない。
- 更新も毎回2つのディレクトリでする必要がある。texmf の update 忘れる等のミスをおかしやすい。
tag を打つ場合は
tags/release-1.0.0/project/2005 tags/release-1.0.0/texmf
と2つをとりまとめる必要がある。
@ サブプロジェクトにブランチを作る方法
texmf を trunk/project/2005/texmf のようにコピーする。
trunk
|
+- project
|
+- 2005
|
+- texmf
2005 ディレクトリからは texmf で参照するようにする。
@ 利点
- チェックアウトする人間は trunk/project/2005 をチェックアウトするだけで良い(texmf サブディレクトリは再帰的にチェックアウトされる)。
- trunk/project/2005 の tag を作るだけで、閉じたスナップショットを作れる。
- texmf が他のプロジェクトと独立する。
@ 欠点
- trunk/project/2005/texmf から trunk/texmf へのマージ、また逆へのマージを適宜行って同期しておく必要がある。骨が折れる。
- trunk の下にブランチ的な要素があるのがちょっと気持ち悪い。
@ 外部定義(svn:externals)を使う方法
trunk/project/2005 の svn:externals 属性として trunk/texmf のURLを指定し trunk/project/2005/texmf となるようにする。
@ 利点
- チェックアプトする人間は trunk/project/2005 をチェックアウトするだけで良い(texmf 外部定義は自動的にチェックアウトされる)。
- texmf を一括管理できる。
@ 欠点
- texmf 以下は別として扱われるので、更新処理などのオーバーヘッドが結構ある(遅い)。
- tag 打ちが面倒
tag を打つ際は
tags/release-1.0.0/project/2005 tags/release-1.0.0/texmf
と2つをとりまとめた上、tags/release-1.0.0/project/2005 の svn:externals のURLを書き換える必要がある。
将来リポジトリが移動してURLが変わった際も(実体は同じリポジトリにあるにもかかわらず)全てのURLを書き換える必要がある。
あるいは tag を打つ際に svn:externals をクリアし tags/release-1.0.0/project/texmf とコピーする方法もある。
@ どれにするか?
去年は外部定義を使用する方法で運用してみたが、update が遅い等それほど使い勝手が良くなかった。
今回はブランチ方式にしようかなと思う。 マージが面倒なようなら、次回は一番上の方式で。
- ドキュメント管理用 Subversion リポジトリ作成 (2004-03-04)
- Subversion (2004-02-18)
- Subversion で間違えてディレクトリをごっそり消してコミットしてし... (2006-11-28)
- プロジェクト関連ドキュメントを TeX で (2004-07-23)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
2006年8月16日 (水)
■ シカゴ・サンフランシスコ出張 2006 ログ - 4日目

LinuxWorld Conference & Expo を見にいく。
@ ダウンタウン
| 日本 | UTC-7 | |
| 昨日の夜いったらすでに閉店していた Tad's Steak でブランチ http://www.tads-steakhouse.com/ | ||
![]() | ||
| Apple Store San Francisco http://www.apple.com/.../sanfrancisco/ | ||
| 銀座、シカゴと同じ | ||
![]() | ||
| Moscone Convention Center http://www.moscone.com/ | ||
![]() | ||
| LinuxWorld Conference & Expo (関連) | ||
![]() | ||
| エンポリオ・アルマーニ Emporio Armani http://www.emporioarmani.com/ | ||
![]() | ||
| バナナ・リパブリック Banana Republic http://www.bananarepublic.com/ | ||
![]() | ||
| カフェ・エスプレッソ Cafe Espresso (462 Powell St.) | ||
![]() | ||
| Walgreens http://www.walgreenssurvey.com/ で買い物 | ||
| ミネラルウォーターと、シカゴで買ったのと同じ髭剃り で $3.43 | ||
| 一旦ホテルへ |
@ フィッシャーマンズワーフ
| ケーブルカーでフィッシャーマンズワーフへ | ||
![]() | ||
![]() | ||
![]() | ||
| フィッシャーマンズワーフ | ||
![]() | ||
| ピア 39 Pier 39。アシカがグォーグォー。 | ||
![]() | ||
| Crab House at Pier 39 http://www.crabhouse39.com/ | ||
| 日本語のメニューもあるがなぜか金額が書かれていない。 | ||
![]() | ||
| 再びケーブルカー | ||
![]() | ||
| 23:30 | ホテルに戻る | |
| ホテルの無線 LAN を使用すると、どうやら他のホテルのアクセスポイントにつながってしまうことがあるようだ。 | ||
| 17:32 | 25:32 | 東京から桃を見せつけられる |
| 27:23 | 就寝 |
- シカゴ・サンフランシスコ出張 2006 ログ - 1日目 (2006-08-13)
- シカゴ・サンフランシスコ出張 2006 ログ - 6日目 (2006-08-18)
- ウェスティンホテル淡路 (2004-10-25)
- Hotel Diva (2006-08-18)
- 天王洲アイル (2002-07-20)
2007年12月23日 (日)
■ aufs を使って Web サイトのドラフト作成する

この nDiki はローカル PC 上で Emacs で記事ファイルを書き、出来上がったら Unison で Web サーバと同期させる形でアップロード・公開している。
この方法で一つ問題なのは「書きかけの記事ファイル」の扱いが面倒なこと。 書きかけの記事ファイルがある状態で Web サーバと同期するとそれが公開されてしまうのでまずい。しかし完成している記事ファイルがあるならばそちらは同期して順次公開したい。 同期する時には書きかけの記事ファイルを退避させればいいのだが、思いっきり面倒。
ということで手元で公開用 (Web サーバ と同期用)のディレクトリツリーと、ドラフト用(ローカルの Web サーバでのレビュー用)のディレクトリツリーを分けられるようにすることにした。 この2つのディレクトリツリーの差分となる草稿・更新ファイルは aufs を使うことで簡単に管理することができる。
@ aufs
aufs は stackable unification filesystem の一つ。 同様なものとしては UnionFS がある。 UnionFS よりも aufs の方が評判が良いようなので今回は aufs を使うことにした。
aufs では複数のディレクトリ(ブランチと呼ぶ)をオーバーレイさせて、1つのディレクトリとして扱うことができる。 公開用ディレクトリツリーに、ドラフト用ディレクトリツリーをオーバーレイさせることで、元のディレクトリには変更を加えることなく透過的に変更できる仮想的なディレクトリツリーを作ることができる。
@ aufs のインストール
Debian GNU/Linux sid へはkernel 再構築とあわせて module-assistant でインストールした。
@ マウント
以下のように3つのディレクトリを作ってマウントする。
- /home/naney/www.naney.org
- 公開用ディレクトリツリー。本番モノ。公開サーバと同期する。
- /home/naney/draft.naney.org
- 草稿や修正されたファイルが書き込まれるディレクトリツリー。
- /home/naney/next.naney.org
- 公開用ディレクトリツリーに、草稿や修正されたファイルが仮想的にオーバーレイされたディレクトリツリー。プレビュー用。
mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro none /home/naney/next.naney.org
公開ディレクトリツリーは read only に、草稿用のディレクトリツリーは read - write になるように指定する。
これで /home/naney/www.naney.org 以下はいじらないまま、/home/naney/next.naney.org 上で草稿を書いたりファイルを編集したりすることができる。 /home/naney/next.naney.org 以下で追加したファイルや、変更したファイルは aufs が /home/naney/draft.naney.org 上に保存してくれる。
完成したものを /home/naney/draft.naney.org から /home/naney/www.naney.org に順次反映させ(移動し)、公開サーバへ同期することで公開していくことができる。
手元ではいろいろ書き散らせておけるのは、これは便利。
マウントオプションは他にいろいろあるようなので、こまかい設定は見直すかも。
@ その他
ファイルシステムレベルの処理なので、アプリケーション側では何も手を加えなくてもよいのが良い。
今回は公開用とドラフト用としたが、公開用と未公開用をローカルでミックスして表示するようにしたり、複数ユーザのコンテンツディレクトリを仮想的に1つにまとめたりと、いろいろ面白い使い方ができそうだ。
- はいぱー日記システムで日記を開始 (2001-05-11)
- aufs で inotify を使ってブランチ上の直接の変更をすぐに反映させる (2008-01-05)
- www.naney.org をさくらのレンタルサーバへ移転 (2009-12-23)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
- はいぱー日記システムアップデート (2001-05-19)
2008年1月5日 (土)
■ aufs で inotify を使ってブランチ上の直接の変更をすぐに反映させる

最近 aufs を使って Web サイトのドラフトを作成する(記事)ようにしているが、使っていて1つ不具合が出てきた。 今の設定だと、ブランチ側(今回の使い方だと公開ディレクトリツリー)のファイルを直接変更しても、aufs のキャッシュによりマウントしたディレクトリ側ではその変更されたファイルではなく、変更される前のファイルが見えてしまう。 これはちょっと不便。
マニュアルを見るとマウント時のオプションで udba=inotify を指定して inotify を使うようにすれば良いとのこと。
早速指定してみたがマウント時にエラー。 どうやら udba=inotify を使えるようにモジュールをコンパイルしていなかったようだ。
@ aufs モジュールを作り直し (Debian GNU/Linux sid)
aufs のマニュアルを見ると CONFIG_INOTIFY と CONFIG_AUFS_UDBA_INOTIFY を有効にする必要があるとある。前者は Linux kernel ビルド時に指定済み。
後者を有効にして aufs を作り直す必要がある。
module-assistant だと設定の仕方がわからないので、aufs.tar.gz2 展開して直接 make-kpkg modules_image でビルドするようにした。
aufs.tar.gz2 を展開後、debian/conf.mk を編集して
- export CONFIG_AUFS_HINOTIFY = y 行を追加
- EXTRA_CFLAGS 指定のところで、-DCONFIG_AUFS_HINOTIFY を追加
とし、後は普通に make-kpkg を使う。 マニュアルとは設定名/マクロ名が違うので、ちょっとはまったがこれで udba=inotify を使えるようになった。
@ マウントする
前回のマウント方法をちょっと修正して以下のようにする。
mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro,udba=inotify none /home/naney/next.naney.org
これで /home/naney/www.naney.org 以下を修正すると、すぐさま /home/naney/next.naney.org の方でも反映されるようになった。
メデタシメデタシ。
- Debian Linux kernel 2.6.26 にアップデート (2009-02-07)
- ThinkPad X31 と sid の Linux kernel 事情 (2009-10-04)
- Debian Linux kernel 2.6.23 をビルドする。 (2007-12-23)
- aufs を使って Web サイトのドラフト作成する (2007-12-23)
- Debian kernel パッケージ構築 (2004-05-09)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.024407s / load averages: 0.05, 0.09, 0.08
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)

























◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。