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を使ってファイル管理している人の質問と情報交換スレ。 >>212 cvs2clは、いちどどこかにcheck outしないとだめなようですが(違う?)、 そうではなく、現在のCVSROOTの中から生成する方法はないものか、と思ったのです。 >>210 ありがとうございます。 >>215 ありがとう。 Automatically generate ChangeLog on CVS commit using cvs2cl この一文が素敵です。これから試してみます。 gnu.orgつながらない... CVSROOT/modulesに public_html -i /home/user/CVS/CVSROOT/update.sh public_html と書いてcvs co public_htmlを実行すると、 XXX: invalid option -- i cvs server: modules file has invalid option for key public_html value -i /home/user/CVS/CVSROOT/update.sh public_html cvs [checkout aborted]: cannot expand modules と言われます。-iがinvalid optionだと言われても困るわけですが、 これはバグだったりするんでしょうか。 どうすればmodulesにエントリのあるmoduleをcoできますか。 >>217 プログラムを実行するやつは かなり昔から禁止になっている。 最新のだとコードがなくなっている。 >>218 そうなんですか。 じゃあおとなしくloginfoでupdateする事にします。 ありがとうございます。 先生質問です OS:Solaris8/SPARC CVS:1.11.19(cvs-1.11.19-sol8-sparc-local.gz パッケージを使用) # cvs import -m "import TEST" TEST TEST start とやると cvs [import aborted]: Only numeric branch specifications with two dots are supported by import, not `1.1.1'. For example: `1.1.1'. とimportが失敗してしまいます。 ・リポジトリ内にmkdirで直接ディレクトリ(TEST)を作成 ・作業場所でTESTをチェックアウト ・TEST配下にモジュールを放り込みcvs addで追加 とやれば登録はできましたがimportだけは必ず失敗します エラーの内容も意味がわかりません 「not `1.1.1'. For example: `1.1.1'.」(1.1.1はダメ、例:1.1.1) どうにかならないでしょうか >>220 vendortag と releasetag に同じ TEST を使うから悪い。 >>220 , >>221 うちでも前1.11.19のとき同じ症状が出た。原因はわからなかったけど。 (vendortag / releasetag は違うものにしてた。) 1.11.20にしたら? >>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-268 cvs 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ではサーバ側が ほとんどの処理をします。 read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる