CVS 1.3
RCS board: http://pc5.2ch.net/unix/
Working thread: CVSスレ
head: 1.3
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 3; selected revisions: 3
description: CVSを使ってファイル管理している人の質問と情報交換スレ。
>>249
そうは言っても、いまさらSVN使える状況でわざわざCVSは使わんだろう >>249
> 声高に CVS is UNKO! とか唱えてるのを見てると
そんなプロモーションあったか? Google の Project Hosting は svn のみ対応だね $Id$の時刻をJSTにすることってできないんですかね やっぱそーか。
夜遅くまで仕事して、やっとこさでcommitしたのに 14:30 とか出ると脱力するよね。 あるホストで新たにディレクトリを掘って,
ファイルを cvs add で追加して cvs commit したあと,
別のホストで cvs update しても,
そのディレクトリが落ちてこないのですが,
どうすればいのでしょうか? .cvsrcに書いてそれっきりだからまちがいたんだよもん >>265-268cvs update -dでできました.ありがとうございます. CVSで、ディレクトリを削除するにはどうするの?
cvs remove directory-name としても、削除されないんだけど。
手動で削除すると、今度はcvs infoのときに「directory-nameがない」というエラーになるし。
>>270
cvsは一度作ったディレクトリは削除不可。
>>271の言うようにcvs update -Pすると空のディレクトリはupdate時に
消すようになるので、これを徹底させ、いらないディレクトリは空にしておく。 >>271,272
thank you
やっぱりsubversionのほうが細部にわたってよくできてると感じてしまう。後発だからあたりまえだけど。 ウェブアプリを開発するときはソースをどう管理するのがいいんでしょうか?
開発効率を考えると、
作業コピー=開発環境・テスト環境
として、普段はいきなり動作しているサーバのファイルを書き換えてしまう
というのがよさそうですが、リリースするときは CVS ディレクトリを削除
しなければならないですよね。
開発者ごとにローカルにチェックアウトする方法だと、いちいち
コミットしなければ確認できないですし。 >>274
web サーバ側の設定で CVS/ をアクセス禁止にしちゃえば? つうか、CVSが残るのって開発・テスト環境だけだろ? 何か問題あるのか?
サービスマシンにコピーするにはrsync -Cとかcvs exportでいいだろ >cvs exportでいいだろ
これは駄目だ。cvs add し忘れているファイルがあるかもしれない。 >>277
自分は別のホスト(単にVMwareで最小限の環境を組んだだけ)で
checkoutして、自動テストを走らせてチェックするスクリプトを起動している。
手動で継続的結合をやってるわけだ。
……できればレポジトリにコミットされてから数分後に自動で
テストが走るようにしたいが、時間が無くて手を付けてないけど。 初心者の質問かもしれませんが・・・
CVSではCVSのツリー全体にロックをかけることはできるのでしょうか?
(ClearCaseではVOBにロックをかけて登録を出来なくすることが出来た)
どういうことがしたいかというと、ビルド最中にはCVSにあるソース全体に
ロックをかけて登録不可にして、ビルド成功後にソースを開放、っていう
風にしたいのです。また、ロックをかけておけばエラー発生時に誰が
エラーなのか探しやすいと思って・・・
スレ違いなら誘導お願いします。 誰かがコミット中の時にロックを掛けてしまうと、いまいちの様な気がする。
1. aliceがA.c, B.c, C.cをコミット中に、
2. bobが、A.cがコミットされた直後にロックを掛ける。
3. aliceはB.cとC.cをコミットできない……この3つのファイルをコミットしないと
コンパイルエラーになるのに。 単にビルド開始時刻かビルドのためにチェックアウトした時刻を
記録しとけば済む話。
> ロックをかけておけばエラー発生時に誰がエラーなのか探しやすい
全然関係ないだろう。 おいらはコミットしちゃダメよーって連絡するだけだなー
ビルド成功したらコミットOKと再度連絡。
あとはコミットした通知をリアルタイムにメールで受け取るようにしとくだけ。
禁止中にコミットしたやつはタコ殴り(^^v そういう時はタグを使えばよいでしょう。時刻というのもありだけど、
CVSではブランチを使う時に「あるブランチ上の時刻」というのを
指定できないので、たとえばlogやdiffを取る時などに不便。
ここ過疎ってるけど、mercurial関連の話題も振ってOK?
スレ別に作ったほうがいい? 犬・マ・ム板を見たけどそれらしい
スレはなさそうだった。
トップ
ttp://www.selenic.com/mercurial/
日本語チュートリアル
ttp://www.selenic.com/mercurial/wiki/index.cgi/JapaneseTutorial
SCM全般のスレが本当はあったほうがいいよね。まあCVSネタは
ほぼないし、とりあえず書いてみてもいいんじゃないかと。
CVSで複数のステージを管理するにはどのようにやったらよいのでしょうか。
ステージ1 開発者がある程度自由にコミットできる場所
ステージ2 システムテスト用
ステージ3 本番用
として、それぞれフェーズをわけた管理をしたい。
モジュールの流れは基本的に開発マシン⇒ステージ1⇒ステージ2⇒ステージ3
の一方通行でよい
SCCSで管理するような親子関係を持てたらよいのかなあと思いました。
ブランチで管理したり、リポジトリを複数持ったりしたのですが、ツールがないためかなりの部分が手作業。
うまく管理できるようなソフトってないのでしょうか。 >>287
CVS、SVNを利用している人は、コーディング完了=即リリースなので
ステージをわけるとか、そういう概念が無いので、仕様。 >>287
ステージごとに違う部隊が担当するんだから
repoごと丸投げすればok.
commit -fでrevision numberを1.xx→2.0にあげとくと
気分的にタグの代わりになる。
「パターンによるソフトウェア構成管理」でも読んでみると良いよ
www.amazon.co.jp/exec/obidos/ASIN/4798112593 287です
>>290
もう少し詳しく教えてください。
よろしくお願いします。
>>291
ありがとうございます
早速読んでみます。
大規模で開発する場合、どうしても依存関係などがあり、
ひとつのステージのみで開発するのが難しいです。
もちろん、各開発者が素晴らしい技術者の場合なんとかなるかもしれません。
(googleなどもフラットだと聞くので)
根本部分の改修など行った場合、本番に出さず暖めたい場合もあります。
その場合など、ステージがないとうまくいかないような気がします。
未熟な開発者が勝手にソースをコミットしてしまった場合も破綻してしまいます。
みなさんはどのように管理しているのでしょうか。 Googleがフラットってか、trunkしかないってのはコレのことかな?
ttp://www.dodgson.org/omo/t/?date=20070111 >>292
|未熟な開発者が勝手にソースをコミットしてしまった場合も破綻してしまいます。
じゃあそいつにコミットビットを与えなければよいのでは
>>291
げ、日本語訳出てたんか。去年原書買って放置してた。
ttp://www.scmpatterns.com/ ノートPC上のCVS(開発中)、研究室のCVS(テスト)、sourceforge(リリース)というように複数のサーバを使い分けてる。rsync --exclude CVS でcopyしてからcommitすればOk。もちろん、tag も使うけどね。 >>296
それってリポジトリは各環境ごとに持ってるってこと?
それともワークディレクトリだけをrsyncで同期かけてるってこと?
287です
>>293
そうです。
>>294
運用で逃げるしかないってことですか・・・・・
>>296
それってよいですね。
ただ、
> 根本部分の改修など行った場合、本番に出さず暖めたい場合もあります。
がうまくできないような・・・・
そもそもコミットしなければよいのですが
分散型 SCM を使えば済む話に思えるんだけど CVS でないとだめなの? >>300
具体的にはどんな分散型 SCM がお勧め? 287です。
>>302
Mercurialというソフトがあるのですね。
SCCSと同じような考え方なのですね。
分散型SCMという考え方のですか。
試してみます 間違って -kb として登録したファイルを cvs admin -kkv
で直したんですが、すでにクライアントの CVS/Entries に -kb
つきで書かれてしまっていて、
cvs up してもキーワード置換が行われません。
全ユーザの作業用コピーを一括で直す方法はないでしょうか。
それともそれぞれのクライアントで、cvs up -A
するしかないんでしょうか? mercurial を windows で使うと、日本語のファイル名が化けちまう。
抽象レイヤもないみたいだし、どうすれば、、、。 >>304 cvs commit -f で強引にリビジョン上げてしまえばいいんじゃね? >>307 (やってみれば分かるけど) 無理。
ブランチを指定してチェックアウトしている時は-A -rBranchとかだな。
>>306
だからといってファイル名までutf-8で保存するようになると
なんとなくsubversionと同じような(ftpサーバをやっている
linuxマシン上で、WindowsからアップロードしたSJISファイル名の
ファイルがワークディレクトリにあるとコケる)状態になりそうで嫌。
subversion は、Windows 側の設定をちゃんとしとけば UTF-8 の repos で
運用できるじゃん。 >>310
> Windows 側の設定をちゃんとしとけば
これをWindows側から使う奴等に徹底させるのが無理
最近、$Id$とかのキーワード置換の中の日付形式が突如変わってしまって、
(2006/11/16 -> 2006-11-16)
cvs diffで$Id$行が変更されてると表示されたり、
cvs updateするとコンフリクトしたと見なされたりするようになってしまったんだけど、
この原因は何?
サーバの側のcvsの設定に関係?それとも、クライアント側?
ウインドウズで使うならビジュアルソースセイフがCVSなんかよりいいだろう? >>312
確か結構まえに変更になった。
ソースをみると決めうちだったと思う。
ちなみにCVSではサーバ側が
ほとんどの処理をします。
>>316
手元のPC(WindowsでもLinuxでもMacOSXでも)で
ローカルなリポジトリを作って、いろいろ試してみるのが良いよ。 svnなんだが、あるブランチとあるブランチに、
共通の系統を維持しつつ同時にコミットするにはどうすりゃいい?
つまりブランチの一部だけ、他ブランチとフォークしないように(〓共有)したいのだが。 mercurial-0.9.4になってsymlinkを認識してくれるようになったんだが、
ワークディレクトリがディレクトリへのsymlinkを含む場合、
hg ci -Aを使って自動バージョン管理をしていると困ることになるな。
ttp://www.edita.jp/blog/one/blog2604115.html cvsのリポジトリがあるサーバーが切り替わる場合の
運用について教えてください。
一台のサーバーに二台のディスク(ad0 ad1)が接続されていて
交代でbootする場合、cvsのクライアント側からどのようにすると
休んでいた方のディスクに休んでいた間の更新を反映できますか?
ad0 と ad1 は完全に独立した環境としたいので、サーバーでの
コピーは避けたいのです。
二つのOSは同じマシンで同じIPで運用するつもりなので
CVSROOTは、ad0 でも ad1でも同じです。 >>324
ad0に2回連続commitしたら
それをad1にcommitしなおすのは
cvs原理的にむり。
clientは昔のことは覚えてないから。
分散リポジトリ系のシステムならできるかもね。
べ、別にFreeBSDのcvs→subversion移行の話をこっちでやれって言ってるんじゃないんだからね!
誤解しないでね! cvs log -d "2008-06-10>2008-07-10" で、この間にcommitされたファイルの一覧を取得したいのですが、
どうすればよいでしょうか? トランクなら、
$ cvs rdiff -s -D "2008-06-10" -D "2008-07-10" モジュール名
でずらずらと出てくるんじゃないかな。
モジュール名指定しないといけないのがめんどいが。
それか普通に history 使うとか。
ブランチは history じゃないとダメだな。 >>328-329
cvs history -ax TMAR -D 2008-06-10
かな。dateで範囲指定はできないっぽいのでsedか何かで切れ cvs 使い始めました。
ブランチして開発したものを HEAD に取り込もうと
cvs -qn update -j xxx -d -P -kk
してます。
ずっとうまくいっていたのですが、
HEAD にある $V = '1.0' を $V = '1.1' にしました。
すると、毎回マージするたびに 1.0 と 1.1 のコンフリクトが発生します。
HEAD は 1.1 で、xxx は 1.0 のままで作業を進めたいのです。
この毎回のコンフリクトを回避するにはどうしたらいいでしょうか? Web サイトを CVS で管理してます。
画像が数千あってマージやコミットに 30 分以上かかってます…。
画像の変化がないことが分かっているときは、
gif や jpg を除いて、html や css だけコミットやマージする方法はありますか?
>>332
updateやcommitコマンドには -I オプションがあるんだけど、
それでだめなら対象のファイルを指定すればよい。
find . -type f ¥( -name '*.html -or -name '*.css' ¥) -print0 | xargs -0 cvs ci
でもたぶんそういう用途にはmercurialやgitみたいに
メタディレクトリをまきちらさないツールのほうが便利だと思う。 >>333
かなり速くなりました。ありがとうございます。
mercurial/git も検討しているのですが、
Windows ユーザが日本語が使えない?らしくて…。
スレ違いではりますが。 >>334
mercurialについていえば、そんなことはないと思うけど、
使い方によるのかな。 バージョンによって、日付表現が
YYYY-MM-DD だったり YYYY/MM/DD だったりと
異なることってある?
$Id$とかの表現が、コミットしたときとチェックアウトしたときとで
全然違うことがあるんだよ >>337
'`ィ (゚д゚)/
Debianでありますた。
ソースから入れたのとバイナリパッケージとで違うという… >>338
(゚д゚)人(゚∀゚)デブナカーマ
いや、ありえるってことがわかっただけで、とりあえず満足しますた。
これで $Id$ やら $Log$ やらを捨てる決心がつきました。
いままでありがとう。 コミットすると実行属性が無くなるんだけど、これは誰のせい?
cvsの設定によるものか、cvsの仕様か、bash等環境のせいか >>238
わたしもRCSつかってるよ(´・ω・`) RCSは/etcの下などでファイル単体の管理がしたい時、特にパーミ
ションのないディレクトリを勝手にスキャンしにいってエラーに
なって欲しくない時にだけ使う。それ以外はmercurialとかgitを
使ってる。 >>340
x 属性のついたファイルをチェックインしたあと、
同じファイルをチェックアウトしたら x がついていない、ってことかな。
手元の WinCVS でもそうなったし、cvs.exe のせいじゃないかな。
実装とかサーバでも違うのかも知れないけど、bash のせいではなさそう。
使いづらいとか愚痴言ってる奴は*BSD開発に参加する資格なし