[#11680] fork_and_kill_other_threads — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです。[ruby-list:26165]からもって来ました。

27 messages 2000/12/02
[#11681] Re: fork_and_kill_other_threads — Masatoshi SEKI <m_seki@...> 2000/12/02

[#11682] Re: fork_and_kill_other_threads — matz@... (Yukihiro Matsumoto) 2000/12/02

まつもと ゆきひろです

[#11685] Re: fork_and_kill_other_threads — nobu.nakada@... 2000/12/03

なかだです。

[#11687] Re: fork_and_kill_other_threads — matz@... (Yukihiro Matsumoto) 2000/12/03

まつもと ゆきひろです

[#11708] Re: fork_and_kill_other_threads — Kazuhiro NISHIYAMA <zn@...> 2000/12/06

On Sun, 3 Dec 2000 23:33:41 +0900

[#11709] Re: fork_and_kill_other_threads — matz@... (Yukihiro Matsumoto) 2000/12/06

まつもと ゆきひろです

[#11710] Re: fork_and_kill_other_threads — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/12/06

なひです。

[#11713] Re: fork_and_kill_other_threads — matz@... (Yukihiro Matsumoto) 2000/12/06

まつもと ゆきひろです

[#11716] Re: fork_and_kill_other_threads — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/12/06

なひです。

[#11718] Re: fork_and_kill_other_threads — matz@... (Yukihiro Matsumoto) 2000/12/06

まつもと ゆきひろです

[#11722] Re: fork_and_kill_other_threads — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/12/07

なひです。

[#11733] Ruby I18N 改め M17N — とみたまさひろ <tommy@...>

とみたです。

17 messages 2000/12/07
[#11735] Re: Ruby I18N 改め M17N — matz@... (Yukihiro Matsumoto) 2000/12/08

まつもと ゆきひろです

[#11751] Re: Ruby I18N 改め M17N — とみたまさひろ <tommy@...> 2000/12/13

とみたです。

[#11752] Re: Ruby I18N 改め M17N — matz@... (Yukihiro Matsumoto) 2000/12/13

まつもと ゆきひろです

[#11789] mswin32 [Q & patch] mkmf.rb — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2000/12/18
[#11790] Re: mswin32 [Q & patch] mkmf.rb — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/12/19

なかだです。

[#11848] Where'd all the Ruby's history gone? — "Akinori MUSHA" <knu@...>

 さっき気付いたんですが、 Ruby のレポジトリから過去分がごっそり

27 messages 2000/12/25
[#11853] Re: Where'd all the Ruby's history gone? — matz@... (Yukihiro Matsumoto) 2000/12/26

まつもと ゆきひろです

[#11861] Re: Where'd all the Ruby's history gone? — Kazuhiro NISHIYAMA <zn@...> 2000/12/26

On Tue, 26 Dec 2000 14:58:07 +0900

[#11862] Re: Where'd all the Ruby's history gone? — matz@... (Yukihiro Matsumoto) 2000/12/26

まつもと ゆきひろです

[#11869] Re: Where'd all the Ruby's history gone? — "Akinori MUSHA" <knu@...> 2000/12/26

At Tue, 26 Dec 2000 17:44:57 +0900,

[#11894] Re: Where'd all the Ruby's history gone? — Kazuhiro NISHIYAMA <zn@...> 2000/12/29

On Tue, 26 Dec 2000 21:24:19 +0900

[#11895] Re: Where'd all the Ruby's history gone? — "Akinori MUSHA" <knu@...> 2000/12/29

At Fri, 29 Dec 2000 18:56:03 +0900,

[#11896] Re: Where'd all the Ruby's history gone? — Kazuhiro NISHIYAMA <zn@...> 2000/12/29

On Fri, 29 Dec 2000 19:07:12 +0900

[#11852] local variable extent problem? — Tanaka Akira <akr@...17n.org>

どうも、Ruby のバグのような気がするものを見つけたのですが、もしかした

21 messages 2000/12/26
[#11855] Re: local variable extent problem? — matz@... (Yukihiro Matsumoto) 2000/12/26

まつもと ゆきひろです

[#11857] Re: local variable extent problem? — Tanaka Akira <akr@...17n.org> 2000/12/26

In article <977817486.100168.31162.nullmailer@ev.netlab.zetabits.com>,

[#11859] Re: local variable extent problem? — matz@... (Yukihiro Matsumoto) 2000/12/26

まつもと ゆきひろです

[#11860] Re: local variable extent problem? — Tanaka Akira <akr@...17n.org> 2000/12/26

In article <977819010.870991.31953.nullmailer@ev.netlab.zetabits.com>,

[#11863] Re: local variable extent problem? — matz@... (Yukihiro Matsumoto) 2000/12/26

まつもと ゆきひろです

[#11865] Re: local variable extent problem? — "Akinori MUSHA" <knu@...> 2000/12/26

At Tue, 26 Dec 2000 17:50:11 +0900,

[#11874] Re: local variable extent problem? — matz@... (Yukihiro Matsumoto) 2000/12/26

まつもと ゆきひろです

[ruby-dev:11887] How to CVSup

From: "Akinori MUSHA" <knu@...>
Date: 2000-12-27 23:52:56 UTC
List: ruby-dev #11887
 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"

In This Thread