トップ(最新)

nDiki : ブランチ

スポンサード リンク

Related term

2004年2月18日 (水)

Subversion このエントリーを含むはてなブックマーク

スポンサード リンク

遅ればせながらチェック。CVSから簡単に移行できるかな? ブランチの扱いが便利そう。

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


[ 2月18日全て ]

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 を変更すれば良い(はず)。


[ 3月4日全て ]

2004年4月4日 (日)

[ WiKicker ] RCSファイルのリビジョン間引き このエントリーを含むはてなブックマーク

以前からWikiPageの編集で「連続する追記はチェックインしない」というオプションを検討している。 実装の前に「既存のRCSファイル中の連続する追記を間引く」というツール(rthin)を作って効果を検証してみた(どこかに転がってそうユーティリティだが見つけられないのでPerl実装)。

  • rlog で '+x -0' なリビジョンが連続した場合は削除対象に
  • rcs -o で削除
  • メジャーリビジョン番号変更の境目では間引かない
  • ブランチは考慮して実装していない

で現在の NaneyOrgWiki で間引いてみたところ 9.5MB の RCSファイルらが 9.0MB になった。 容量的には劇的に減る訳ではないな。 リビジョン数が減るのは精神的に良いが。

これなら無理に WiKicker実装しなくてもいいかも。 rthin をたまに走らせるだけで充分のようだ(実際にはロックを考慮しなければならないけれど)。


[ 4月4日全て ]

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:externalsURLを書き換える必要がある。

将来リポジトリが移動してURLが変わった際も(実体は同じリポジトリにあるにもかかわらず)全てのURLを書き換える必要がある。

あるいは tag を打つ際に svn:externals をクリアし tags/release-1.0.0/project/texmf とコピーする方法もある。

@ どれにするか?

去年は外部定義を使用する方法で運用してみたが、update が遅い等それほど使い勝手が良くなかった。

今回はブランチ方式にしようかなと思う。 マージが面倒なようなら、次回は一番上の方式で。


[ 1月31日全て ]

2006年8月16日 (水)

シカゴ・サンフランシスコ出張 2006 ログ - 4日目 このエントリーを含むはてなブックマーク

LinuxWorld Conference & Expo を見にいく。

@ ダウンタウン

日本UTC-7
昨日の夜いったらすでに閉店していた Tad's Steak でブランチ http://www.tads-steakhouse.com/
naney:219135639 naney:219135442 naney:219135501
Apple Store San Francisco http://www.apple.com/.../sanfrancisco/
銀座シカゴと同じ
naney:219135730
Moscone Convention Center http://www.moscone.com/
naney:219135933
LinuxWorld Conference & Expo (関連)
naney:219136012 naney:219136212 naney:219136331
エンポリオ・アルマーニ Emporio Armani http://www.emporioarmani.com/
naney:219136570
バナナ・リパブリック Banana Republic http://www.bananarepublic.com/
naney:219136655 naney:219136605
カフェ・エスプレッソ Cafe Espresso (462 Powell St.)
naney:219136945
Walgreens http://www.walgreenssurvey.com/ で買い物
ミネラルウォーターと、シカゴで買ったのと同じ髭剃り で $3.43
一旦ホテル

@ フィッシャーマンズワーフ

ケーブルカーでフィッシャーマンズワーフへ
naney:219136876 naney:219137112
naney:219137204
naney:219137444
フィッシャーマンズワーフ
naney:219138100
ピア 39 Pier 39。アシカがグォーグォー。
naney:219138365
Crab House at Pier 39 http://www.crabhouse39.com/
日本語のメニューもあるがなぜか金額が書かれていない。
naney:219138599 naney:219138644
再びケーブルカー
naney:219138737
23:30ホテルに戻る
ホテル無線 LAN を使用すると、どうやら他のホテルのアクセスポイントにつながってしまうことがあるようだ。
17:3225:32東京から桃を見せつけられる
27:23就寝

[ シカゴ・サンフランシスコ出張 2006 ]


[ 8月16日全て ]

2007年12月23日 (日)

aufs を使って Web サイトのドラフト作成する このエントリーを含むはてなブックマーク

この nDiki はローカル PC 上で Emacs で記事ファイルを書き、出来上がったら UnisonWeb サーバと同期させる形でアップロード・公開している。

この方法で一つ問題なのは「書きかけの記事ファイル」の扱いが面倒なこと。 書きかけの記事ファイルがある状態で 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つにまとめたりと、いろいろ面白い使い方ができそうだ。


[ 12月23日全て ]

2008年1月5日 (土)

aufsinotify を使ってブランチ上の直接の変更をすぐに反映させる このエントリーを含むはてなブックマーク

最近 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 の方でも反映されるようになった。

メデタシメデタシ。


[ 1月5日全て ]

この日記のはてなブックマーク数 Add to Google RSS

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)