[#11680] fork_and_kill_other_threads — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。[ruby-list:26165]からもって来ました。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
On Sun, 3 Dec 2000 23:33:41 +0900
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
[#11688] [bug?] cgi.rb / rb_exec_end_proc — Takaaki Tateishi <ttate@...>
立石です.
[#11697] ruby_run() — "K.Kosako" <kosako@...>
細かい話で恐縮ですが、プログラムを読んでいて
[#11733] Ruby I18N 改め M17N — とみたまさひろ <tommy@...>
とみたです。
まつもと ゆきひろです
とみたです。
まつもと ゆきひろです
> |もし MBString を Ruby の基本クラスとして実装するんでしたら、
まつもと ゆきひろです
> |struct RString(とstruct RMBString)からorigメンバを削っても、
[#11758] [PATCH & Q] literal in condition — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
[#11777] Maybe IRB bug!! — Kazuhiro NISHIYAMA <zn@...>
irbで$SAFE=4にしたらSecurityErrorで終了してしまいました。
けいじゅ@日本ラショナルソフトウェアです.
[#11789] mswin32 [Q & patch] mkmf.rb — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
まつもと ゆきひろです
なかだです。
こんにちは、なかむら(う)です。
なかだです。
[#11818] Hash#inspect with symbol key — Hiroshi IGARASHI <igarashi@...>
いがらしです。ご無沙汰してます。
[#11820] pack/unpack の '_' — Koji Arai <JCA02266@...>
新井です。
[#11835] fork exception — nobu.nakada@...
なかだです。
[#11848] Where'd all the Ruby's history gone? — "Akinori MUSHA" <knu@...>
さっき気付いたんですが、 Ruby のレポジトリから過去分がごっそり
まつもと ゆきひろです
On Tue, 26 Dec 2000 14:58:07 +0900
まつもと ゆきひろです
At Tue, 26 Dec 2000 17:44:57 +0900,
On Tue, 26 Dec 2000 21:24:19 +0900
At Fri, 29 Dec 2000 18:56:03 +0900,
On Fri, 29 Dec 2000 19:07:12 +0900
At Fri, 29 Dec 2000 19:35:56 +0900,
On Fri, 29 Dec 2000 19:55:59 +0900
At Sat, 6 Jan 2001 20:33:58 +0900,
えぐち@エスアンドイー です。
[#11849] rb_io_flush — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
[#11852] local variable extent problem? — Tanaka Akira <akr@...17n.org>
どうも、Ruby のバグのような気がするものを見つけたのですが、もしかした
まつもと ゆきひろです
In article <977817486.100168.31162.nullmailer@ev.netlab.zetabits.com>,
まつもと ゆきひろです
In article <977819010.870991.31953.nullmailer@ev.netlab.zetabits.com>,
まつもと ゆきひろです
At Tue, 26 Dec 2000 17:50:11 +0900,
まつもと ゆきひろです
こんばんは。もうこんな時間だ。。
まつもと ゆきひろです
[#11885] New CVSweb — "Akinori MUSHA" <knu@...>
以下の URL に新しい CVSweb を置きました。新しいレポジトリを
[#11898] `www' module is available again — "Akinori MUSHA" <knu@...>
www レポジトリをマージしました。今のところ、 ruby と www の
[ruby-dev:11887] How to CVSup
CVSupd も動き出しています。使い方をだーっと書いてみました。
* * *
CVSup とは、 CVS レポジトリの追っかけをするときに便利な、
CVS よりもずっと効率よくソースやレポジトリ自体を同期できる
ツールです。CVS と違い commit はできませんし、手元で変更が
入ったファイルまたはレポジトリにマスターの変更をマージする
機能もありません。純粋なミラーリングのためのツールと言えます。
CVSup Home Page:
http://www.polstra.com/projects/freeware/CVSup/
cvsup(1) manpage:
http://www.FreeBSD.org/cgi/man.cgi?query=cvsup&apropos=0&sektion=1&manpath=FreeBSD+Ports&format=html
ちなみに、 CVS レポジトリだけでなく、普通のディレクトリの
同期にも使えます。
さて、まずは CVSup クライアントをインストールしないことには
始まりません。Linux や *BSD をお使いの方は、ディストリビュータ
からパッケージが用意されていると思いますのでそれをインストール
してください。
# 残念ながら Windows 版はないようです。(Modula-3 の処理系から
# 移植する必要がある)
ここでいくつか CVSup の用語を解説します。
* collection
CVSup がファイルを持ってくる最小単位。CVS レポジトリの
モジュール(ディレクトリ)一つあるいは複数をまとめたもの。
* prefix
ダウンロードしたものの置き場所(ディレクトリ)。この prefix
ディレクトリの中に、各モジュール名のディレクトリが作られ、
ダウンロードされる。
* base
ダウンロードしたものに関する情報の置き場所(ディレクトリ)。
この base ディレクトリの下に sup というディレクトリが
作られ、その中に各 collection 名のディレクトリが作られ、
その中に collection に含まれる各ファイルの情報が保存
される。CVSup はそれらの情報を使うことで、二回目以降の
同期をより高速に行うことができる。(高速化に関しては、
rsync と同じアルゴリズムを使用する等、他にもいろいろな
技術が使われている)
* supfile
CVSup にどの CVSup server からどの collection (に含まれる
モジュール)のどのバージョン(ブランチ、タグ、日付で指定)を
持ってくるか、それとも collection に含まれるモジュール群の
レポジトリをまるごと持ってくるのか、等を指定するファイル。
(sup というのは CVSup 以前に使われていた SUP (software
update protocol/progarm) というプロトコル/ツールの名前の
名残)
では、 supfile の例を見てみます。
----ここから----
# 各行の書式は collection-name [option[=value] ...]
#
# ひとつの supfile で複数の collection を指定することも可能。
# 特別なcollection名 "*default" は、それ以降のオプションの
# デフォルト値を設定する。
# compress: データを圧縮してやりとりする
# delete: 不要なファイルを削除する
# (CVSup の知らない--ユーザが独自に作成した--ファイルを
# 勝手に削除することはない)
# use-rel-suffix: なにか神秘的なおまじない:) cf. cvsup(1)
*default compress delete use-rel-suffix
# host: CVSupサーバ
*default host=cvs.ruby-lang.org
# base: CVSupの base ディレクトリ
*default base=/usr/local/src
# release: release名 (CVS レポジトリには cvs、CVS レポジトリでない
# ものには current を指定)
*default release=cvs
# prefix: 転送先ディレクトリの prefix
*default prefix=/usr/local/src
# tag: CVSのタグ名
# `.' (ピリオドひとつ) は「メイン(HEAD)ブランチの先頭」を表す
# date: 日付 (GMT)
# yyyy.mm.dd.hh.mm.ss (月は 0-11 で指定)
# ruby コレクションの ruby_1_6 ブランチの最新ソース
ruby tag=ruby_1_6
# ruby コレクションの 2000/12/25 12:34:56 GMT の時点のソース
#ruby date=2000.11.25.12.34.56
#
# tag/date を指定しないとレポジトリ全体を持ってくる
#
# レポジトリを持ってくる場合、 prefix を base より一段深くして
# レポジトリのディレクトリに sup ディレクトリが入らないように
# した方がいい
*default base=/home/ruby
*default prefix=/home/ruby/cvs
# cvs-ruby-all は CVSROOT も含んだコレクション
cvs-ruby
----ここまで----
つまり、レポジトリが欲しいときは
*default compress delete use-rel-suffix
*default host=cvs.ruby-lang.org
*default base=/home/ruby
*default release=cvs
*default prefix=/home/ruby/cvs
cvs-ruby
というものを用意すればいいということです。/home/ruby/cvs を作って
おくのを忘れずに。
ということで supfile ができたら、分かりやすいように cvs-ruby.sup などと
好きな名前で保存し、
$ cvsup -gL2 cvs-ruby.sup
とすると同期が始まります。-g を付けないと同期中の統計情報なども
出る GUI 版が立ち上がります。(つまり cron から実行するときは -g が
必須)
-L2 は出力メッセージの詳細度の指定です。2 が適当と思います。
さらに -s を付けると、各ファイルがローカルで変更や削除されて
いないかのチェックが省略され、純粋に base 以下に保存された情報
だけを元に同期するため、二回目以降に使うとすごい速さで同期が完了
します。
ただし、何らかの理由:
- cvsup 中にサーバまたはクライアントがリブートした
- 予期せぬタイミングでのネットワークエラー
- ハード不良 ;)
で制御情報がおかしくなったりファイルが破損してしまうこともあるので、
cron に登録する場合、たとえば一日一回というスケジューリングなら、
月曜から土曜は -s 付き、日曜は -s なし、というようにしておくと安全
です。
また、一回だけ特定のバージョンを取り寄せて作業して終わり、という
場合はいいですが、特にレポジトリを持ってくる場合、持ってきた
レポジトリはリードオンリー(commit 等はしない)で使いましょう。
ローカルで commit しても、次の同期で単純にマスターのファイルで
上書きされてしまいます。
ローカルミラーの賢い使い方は、マスターとの使い分けにあります。
例としてローカルレポジトリを /home/cvs, マスターを master:/home/cvs
とすると、
$ alias lcvs='cvs -d /home/cvs'
# 普段はローカルを使う
$ alias rcvs='cvs -d master:/home/cvs'
# マスターを使うための alias
$ lcvs co modulex # ローカルから checkout
$ cd modulex
[..作業..]
$ lcvs diff # ローカルで自分の変更箇所を確認
[..作業..]
$ rcvs -n update # マスターに他の誰かが commit したか確認
$ rcvs diff # されていた場合、マスターとの差分を調べる
$ rcvs update # マスターとマージする
[..作業..]
[この間に CVSup でローカルレポジトリがマスターに同期されたと仮定]
$ lcvs diff # 変更を確認
[..作業..]
$ rcvs -n update # commit 前にマスターの状況を確認
$ rcvs commit # マスターに commit
のような感じで作業すれば、マスターに対するアクセスを減らすことが
でき能率が大きく向上します。
作業中にローカルがマスターよりも古すぎるとやりづらいですが、
cvsup -s は軽く、サーバおよびクライアントマシンに大して負荷が
かからないので、短い間隔(毎時とか)で動かしても大丈夫です。
さらに、ここでは割愛しますが、 CVSupd を走らせると、上位サーバ
からミラーしながらクライアントを受け付けることができるので、
LAN 内の何人(台)かのマシンでミラーレポジトリを利用したい場合は、
ローカルに一台 CVSupd を立てるとハッピーになれます。(大本の
サーバの負荷も減る)
このような手法によって、 FreeBSD などの多くのユーザを抱えた
プロジェクトでは、 CVSupd ミラーサーバを各地に階層的に配置し、
committer もアクティブな人はローカルにミラーレポジトリを置いて
作業することで、世界でただ一台しかないマスターレポジトリサーバの
負荷をうまく分散しています。
* * *
さて、今のところ cvs.ruby-lang.org の CVSupd で用意されている
collection は
ruby (ruby のみ・ソースの同期用)
cvs-ruby (CVSROOT と ruby・レポジトリの同期用)
だけです。ruby-man* などについては、 cvs.ruby-lang.org にコピー
してくだされば今夜にでも collection を用意できます。
なお、 www は cvs.netlab.co.jp にあったものと cvs.ruby-lang.org に
あったものの間にコンフリクトがあった(両方それぞれ同じファイルの同じ
リビジョンに commit されていたりする)ので、今夜にでも私がマージして
みます。なので www に対する commit はそれまで控えてください。
ruby については、今 /var/anoncvs/cvsroot/ruby にあるものが完全な
マスターです。どんどん commit していただいてまったく構いません。
他のレポジトリに誤って commit したりすると、またマージしないと
いけなくなってしまいます。くれぐれも、 /var/anoncvs/cvsroot/ruby
から checkout したものについて commit するよう気を付けてください。
それではまた。
--
/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp
"We're only at home when we're on the run, on the wing, on the fly"