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を使ってファイル管理している人の質問と情報交換スレ。
>>221,>>222
返答ありがとうございます
# cvs import -m "import TEST" TEST TEST start
リポジトリのディレクトリ名:TEST
vendortag:TEST
releasetag:start
ですよね?
sunfreeware.comに1.11.20があったので
こちらで試してみようと思います >>222
ChangLogとソースを見ると
assert()内でregcomp()してたのが原因。 cvs(というかRCSファイルというか)で、たとえばブランチ1.1.1の
commitをそのままデフォルトブランチ(1)にもってくる(コピーでもOK)
ツールはないでしょうか。
>>230
そういうツールは聞いたことはないけど
cvs export -r vendor -d module.vendor module
cvs checkout -d module.trunk
module.trunkの下のファイルを消す
(cd module.vendor && tar cf - .) | (cd module.trunk && tar xf -)
かなぁ。
ファイルの数が少ないのなら cvs update -p -r vendor file でもいいと思うけど。
>>231 説明が悪かったようです。
たとえばブランチ1.1.1に次のようにいくつかcommitがあるとき、
1.1.1.4 データを追加
1.1.1.3 スタイルを整理
1.1.1.2 処理を追加
1.1.1.1 スクリプトの原形
これらの履歴をデフォルトブランチ(1)に持ってきたいのです
(できれば日付とかcommitlogはそのままで; 1以外のブランチはなくてもOK)
1.4 データを追加
1.3 スタイルを整理
1.2 処理を追加
1.1 スクリプトの原形
もとのブランチ1.1.1はcvs importコマンドで何度かつっこんであるだけで
forced commitでデフォルトブランチへ持ってきていないのですが、いざ使う
となった時に「ブランチは面倒」ということになって、さてどうしようかと...
>>232
そういう意味でしたか。
RCSファイルレベルで考えるとメイントランクとブランチでは差分をとる方向が違うので実現はなかなか難しそうです。
ちょっと違いますが
cvs admin -b 1.1.1 でメイントランクを変えてしまうのはどうでしょうか。
>>233
それもやってみたことがあるんですが、残念ながらメイントランクは
commitするとリセットされちゃう(というか1.1.1が特別だからなのか
意識せずにcommitすると1.2とかになっちゃって、メイントランクも
そっちへ移ってしまう)んですよ。いっそのこと手で一個ずつ書き替え
てやろうとも思ったんですが、-kbで放り込んでるやつ(*.gifとか)は
手が出ないかも...
FreeBSDは5.4を、CVSは1.11.17を使っています。
用件を先に言いますと、CVSで「上書きエクスポート」ってできるでしょうか
どういうことかというと・・・
たとえば/usr/local/www/subdomain/wwwにエクスポートするとします。
で、
www# cvs export -d /usr/local/www/subdomain/www -D tomorrow example.com
のようにやればできることはわかります。
ですが、
/usr/local/www/subdomain/www
にすでにファイルがある場合、上記のコマンドを実行すると、
cvs export: Updating /usr/local/www/subdomain/cvs
U /usr/local/www/subdomain/www/.project
? /usr/local/www/subdomain/www/.settings
? /usr/local/www/subdomain/www/htdocs
? /usr/local/www/subdomain/www/inc
と表示されてしまい、エクスポートできません。
なので、いちいち
www# rm -rf /usr/local/www/subdomain/www
と全削除してから、
www# cvs export -d /usr/local/www/subdomain/www -D tomorrow example.com
してるのですが、
普通こういうものなのでしょうか?
コミットされてエクスポートされてないファイルのみをエクスポートすることって
できないでしょうか?
よろしくお願いします。 >>235 チェックアウトすればいいんじゃなかろうか? >>236
あう・・・そのとおりですね。すいません 1ファイルだけのお手軽複数世代バックアップとしてつこてるよ ドットファイルや/etc の設定ファイルなんか RCS でバックアップ取ってるよ。 普通に/etcをCVS管理下にしてる。RCS使いにくいし。 RCSは少ないファイルには有効みたいですね。
複数ファイルではCVSとSubversionはどっち使えば幸せなのかな? rcs ぜんぜん使いにくくないよ。
ときどき ci -l するだけで履歴とバックアップが記録できるんだから
楽なもんだ。
emacs からなら cvs と同じように扱えるし。 いや、実際問題 -l を知らんとすげー使いにくいと感じると思う >>242
社内ではdnsの設定ファイルの管理につかわれている。
でもsvnにはリスペクトの精神が感じられないからな・・・
声高に CVS is UNKO! とか唱えてるのを見てると
あまりいい印象を受けないよな。
プロモーション手法としては感心できん svnもCVSもワークディレクトリをメタディレクトリで汚すので、
(webのデザインツール+FTPツール)だけを使う人達と仕事をする時には
使いづらいな。
>>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