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を使ってファイル管理している人の質問と情報交換スレ。
---------------------------- revision 1.3 date: 2004/08/27 21:50:57; author: dayomon; state: Exp; res: +1 -0 CVS 1.3 ---------------------------- revision 1.2 date: 2003/03/10 11:10:28; author: コンサルタント; state: Dat; res: +984 -0 CVS(2) http://pc5.2ch.net/test/read.cgi/unix/1047262230/ ---------------------------- revision 1.1 date: 2001/08/10 18:10:33; author: anonymous; state: HTML; res: +982 -0 CVSを使ってファイル管理 http://pc.2ch.net/unix/kako/997/997434642.html ============================================================================= うーむ、最近だと画像入りのHTMLで書いたマニュアル含むようにしているから Subversionしか使わなくなったなぁ。 cvsをつかうので export CVSROOT=$HOME cvs init mkdir myproject cd myproject echo "test test test" > test.txt cvs import -m "My Project" myproject hoge myproject_1_1 とやると cvs [import aborted]: attempt to import the repository というメッセージがでてうまくimportできません。 OSはFreeBSD5.2.1 cvsは1.11.5です たすけてエロい人 >>11 あまりにバカ過ぎる。 そのままでは到底CVSをまともに使えそうには望めないから、 適当な入門ページをぐぐって読め。 >>12 適当な入門ページをググって読みました。 事故解決しました。 CVSROOTを勘違いしてました。 逝ってきます >>14 調べずに書くけど $user, $username ではないの? -u とかでパッチ作るときに $Log$で生成された行はパッチの対象外にしたいんだけど どうすりゃいいかね がんばるしかない? あと $Id$も対象外にしたいな こっちはまあなんとかなりそうだけど >>19 file is unchanged; reverting to previous version done >>22 そこwincvs specificな話ばっかりじゃねーか でも見てるとUNIXだと問題にもならんようなネタばっかだぜ。 そーいやこないだコマンドラインからは問題ないけどスクリプトからだと cvs update できなくてちょっとハマった。 結局 zlib のバージョン違いが原因らしく -z3 外して治ったんだけど、皆も これに遭遇してたりする? ttp://cgi.NetLaputa.ne.jp/~kose/diary/?200403b&to=200403161#200403161 CVS内で使われるdiffってなんなの? 本物のdiffのサブセット? >>29 だって本物のdiffと比べて、使えるオプションとか全然違うじゃん。 cvsがラッパーになってオプションを置き換えつつ本物を呼んでるのか それとも中にdiffのようなものがあってそれをコールしてるのか。 じゃあ偽者でもいいや とにかく、cvsが使ってるdiffと、/usr/bin/diffにあるdiffとは オプションも動作も似てるけど別物だから 困っちゃうよね という話 スマソ 違った cvs diffがrcsdiff呼んでdiff(1)が実行されるのですね その過程でオプションがもぎ取られていくのでは >>38 二言目には「ソース見れ」ってのは よくない風潮だよ OK cvsの仕様バグってことがわかったので ありがとう >>39 なんでも「ソース見れ」はよくないが 今回の件はソースを読むのが一番早くて確実でしょ。 pserverを立てる方法は結構いろんなサイトに載ってたりするのですが extの立て方を立てるサイトがなかなか見つかりません。 説明されているサイト等を教えていただけませんでしょうか。 どうせならRCSのスレにしようぜ って誰も使ってネーーーーーーーー あーたのしーー branchとタグの話を詳しく解説したサイトってない? Free BSDの場合とかも知りたい。 branch ってのはあれだ。 朝飯だか昼飯だか分からん様な時間帯に食う飯のことだ。 すいません、教えてください。 とあるオープンソースのソフトを改造しようと思って自前のリポジトリに入れてみたんですが、 // $Id で始まる行が変えられてしまっていました。これってCVSの管理用キーワードということ らしいんですが、みなさんこういう(元々CVSで造られたものを新たにリポジトリに入れる)場合って どうしてますか? 気にしない? >>54 ttp://www.sodan.org/~penny/vc/cvs-ja_12.html#SEC100 OpenCVSキタ━━━━━━━━━━(゚∀゚)━━━━━━━━━━!!!!! http://www.opencvs.org/ しかしCVSと同機能+αなものを、綺麗に実装しなおしてくれるなら 喜ばしいことだ。 俺がイメージキャラクターを書き直してやるよ CVSたんって今何歳だっけ >56 どもです。 $Idとかって絶対必要なのかといつの間にか勘違いしてしまっていました。 別に無ければ無くていいみたいなので、cvs import -koしました。 cvs で www を管理するとします。 そのとき、local copy を cvs commit させたものを httpd から見えるようにするには、自動的に cvs update するよう cron を設定する のが普通ですか? >>63 メール通知を利用するのがいいんではないだろうか。 commitinfoにcheckoutするscriptを指定するのが一般的と思う。 でも権限に気をつけれ。 installスクリプト作っとくとかmake installするとかじゃだめかね cvs update するものが多重起動した場合の処理、ファイルが むちゃくちゃ多くなって cvs update に時間がかかるように なった場合の問題、CVS/ ディレクトリのアクセス制限処理、 単に static なファイルを取り出すだけじゃなく、HTMLを なんらかのデータ等を元に自動生成するようなページがある場合、 など、状況によりけりだと思う。 WinCVSのように unixのCVSも日本語でログ付けられるんでしょうか? >>70 コミット時に起動するエディタが日本語入力に対応してれば ログメッセージは日本語にできる. 日本語入力できなければ, 引数で %cvs ci -m 'ホゲホゲ' >>72 「シェルで日本語入力」って意味が分からん。 kinput2とか使って貼りつけるって事か? >>74 たとえばbashで8bit目を落とすような設定になっていたりすると (たとえコピペでも)アウトとかね。 それはもうCVSとは関係ない問題になってしまうよ。 レポジトリにある、特定の日付のスナップショットをチェックアウトすることってできますか? プロジェクト名/サブプロジェクト名/hoge/piyo ってなっててサブプロジェクトのモジュールのみをとりだして使いたい場合 サブプロジェクト以下のファイルだけをcheckoutすることはできますか? >>79 こういうこと? cvs co -d サブプロジェクト名 プロジェクト名/サブプロジェクト名 変更のあったファイルだけを表示したいので、 cvs update | grep -G '[AM] ' とかやってみたのですが、これでも「cvs update: Updating hoge」とかが 表示されてしまいます。変更ファイルの情報のみを表示するにはどうしたら いいでしょうか。 シェルはbashです。 >>82 ~/.cvsrcに cvs -q diff -u とか書いとくと便利。あと update -dP checkout -P とかも。ただし-PはCVS管理対象のファイルが一個もないディレクトリを消して しまうものなので、場合によっては不便かも。 「-q」なんてオプションあったんですね。 設定ファイルも初めて知りました。 ありがとうございます。 $ cvs up 2>&1 | grep ^[AM] とかゆー話なら シェルスクリプト総合 その1 http://pc5.2ch.net/test/read.cgi/unix/1101820646/ >>85 う、むしろそうゆー話だったかもしれません。 何じゃこのリダイレクトは…。orz 勉強逝ってきます。 CVSサーバで管理されてるあるモジュール配下の、ディレクトリ名やファイル名を取得してツリー表示したいんですけど、 クライアントからコマンドで実現するとしたら、どんな手段がありますか? いったん対象をすべてチェックアウトして、その情報から一覧を作成するというのはナシで。 >>90 自前でpserverプロトコル喋ってがんばる >>91 それはpserverプロトコルでできることを確認して書いてるんだな? >>90 コマンドとか言わんとeclipceかwincvs eclipseのCVSリポジトリービューってあるじゃないですか。 あれと同じような機能のビューをプラグインで作ることになって。 今はWindowsのコマンド叩いてますが、eclipseのプラグインから呼ぶ場合って、 他の手があるのですか? pserver立てる時に 「/etc/inetd をいじる」 とどの説明書きにも載ってるんですが ウチのredhatにはそんなファイルないです。(xinetdだったらあるけど。) 代わりのやりかた教えてください >>95 みたいのは既にCVSの問題じゃないんだってば。 >>95 >>98 $ info cvs を実行して、「/server_args」と入力してEnter押してみな。ちゃんと xinetdの設定ファイルの書き方があるだろ。xinetd自身はLinux特有じゃない からLinux板じゃなきゃいけないこともないよ。 100ゲト。 >>90 cvs-1.12系だとcvs rls -R とかでいけそうだね。 どうしてわざわざsubversionを使わないのかが分からない >>102 fsfsをバックエンドにするとそれなりにスピードが出るよ。 webのコンテンツを根こそぎsnapshot取るのに使っているけど いまのところSJISのファイル名(「コピー 〜 foo.gif」とか)に 遭遇しない限り問題なく動くしね。 あとまだ試してないけど、WebDAVではなくsvnserveモードで使えば 違いがあるのではないかな? ViewCVS と cvsweb ってどう違うの? プロジェクト内 web サーバにどっちか動かそうと思っているのですが、 ViewCVS や cvsweb のページを見てみても、機能の違いがわかりません。 どっちもほとんど同じ? 細々とした部分では ViewCVS が好き。 でも ViewCVS の diff が ediff ではないので cvsweb を使ってる。 CVS で、commit すると、Version .... な行の日付とかを書き換えてくれるけ ど、これを書き換えさせないためには、どうしたらいいの? 質問です。 NTサーバのpserverをLinuxから使いたいんですけど、ドライブ名ってどうやって指定したらいいですか? 例えばDドライブにリポジトリがあるときに、 % cvs -d :pserver:ユーザ名@ホスト名:d:/hoge/CVSROOT login cvs login: CVSROOT may only specify a positive, non-zero, integer port (not `d:'). cvs login: Perhaps you entered a relative pathname? cvs [login aborted]: Bad CVSROOT: `:pserver:ユーザ名i@ホスト名:d:/hoge/CVSROOT'. % cvs -d :pserver:ユーザ名@ホスト名:/d:/hoge/CVSROOT login Logging in to :pserver:ユーザ名@ホスト名:2401/d:/hoge/CVSROOT CVS password: Bad repository root '/d:/hoge/CVSROOT' となります。 windowsでwincvsからなら使えてます。 よろしくお願いします。 ここに書いてあるようにしてもだめでした。 http://lists.gnu.org/archive/html/info-cvs/2001-11/msg00615.html % cvs -d :pserver:ユーザ名@ホスト名:/d//hoge/CVSROOT login Logging in to :pserver:ユーザ名@ホスト名:2401/d//hoge/CVSROOT CVS password: Bad repository root '/d//hoge/CVSROOT' :pserver:user@host:2401:D:/hoge/cvsroot じゃどう? % cvs -d :pserver:user@host:2401:D:/hoge/CVSROOT login cvs login: CVSROOT may only specify a positive, non-zero, integer port (not `2401:D:'). cvs login: Perhaps you entered a relative pathname? cvs [login aborted]: Bad CVSROOT: `:pserver:user@host:2401:D:/hoge/CVSROOT'. となりました。 使えてるwincvsの設定では :pserver:user@host:D:/hoge/CVSROOT と書いてあります。 parseがうまくいってないだけな気がするから、 unix側のcvsを適当に書き変えちゃえばいいんじゃ >>115 いろいろ試してるんですけど、うまくいかなくて。 ""とかいろんなところに入れてるんですけど。 zshがいけないのかと思ったけど、shでも同じでした。 すいません、初心者な質問です。 CVSサーバのリポジトリに登録してあるモジュールをcheckout した場合、checkoutした人がモジュールをcommitしないと他の人が そのモジュールに対してcheckoutなり、手を加えられないといった ことはおこりませんよね? 例えば、Aさんが"hoge"ディレクトリをcheckoutしたら、Bさんは Aさんが"hoge"ディレクトリをcommitするまで、hogeディレクトリ に対してソースを見る事はできるが、手を出せないといったことは 起こるんでしょうか?用語を間違っているところがあるかもしれませんが よろしくおねがいします。 起きません。 ただし、B氏がcoした後でA氏がciした場合、 B氏はまずupしなければciできなくなります。 upした時に、競合があれば解決してciという流れ。 すばやいレスありがとうございます! なるほど、そういうこともあるんですね。 CVSやSubversionのチェックアウトは、とくにロックをかけずに 「単に作業用コピーとしてローカルに持ってくる」だけ。 基本的には同時に複数の人が別々に作業できる。同じファイル を弄ることも可。 弄る箇所が違えばほぼ自動的に他人の変更箇所も取り込める。 同じ箇所を弄れば衝突箇所が発生しうるが、そこは開発者同士の コミュニケーションで解決する。 >>117 そういうことでしたか。 cvsのソースみてみたけど、よくわからない。。。 /etcにある設定ファイルなどもCVSで管理しています。 前にリポジトリのディレクトリ構造変更に伴い、CVS管理ディレクトリを削除、 再びチェックアウトとしてみたのですが、当然管理していたファイルはすでに存在するため、 コンフリクトのようなメッセージが出て、管理ディレクトリはできるものの、 ファイルは管理対象とはなってくれませんでした。 確かこのときは、対象ファイルを消してはupdateということをやったと思います。 今度リポジトリを別のマシンに移したいので、また同じ作業をしないといけないのですが、 /etcの下すべてのファイルを管理しているわけではないので、いったん全部消す というわけにもいかないので、面倒です。 チェックアウト時、既存ファイルを強制的に上書きするようなことはできないものでしょうか。 強制上書きオプションちと見あたらないのだが、もし リポジトリの位置やアクセス方法が変わっただけなら CVS/RootやらCVS/Repositoryを書き換えるだけで 済んでたことだったのかもね。 >>123 旧リポジトリで cvs -d <old> ci ... 新リポジトリに移行 cvs -d <new> co -d /<tmp_dir> diff -rU... /<tmp_dir> /etc | (cd /<tmp_dir>; patch -p ...) mv /etc /etc.save mv /<tmp_dir> /etc ってな, 話ではない? アドバイスどうも。 >>124 あちこちにあるので、それも結構面倒でして。 >>125 なんか例はややこしいですが、要は一時ディレクトリに管理している分だけ チェックアウトしておいて、それを上書きすればよさそうですね。今度これやってみます。 sudoersのようにパーミッションを変更する必要があるファイルがあるかもしれませんが。 >>126 Makefile用意してmake installとかinstall.sh用意するとか。 タイムスタンプがおかしいんだけどどこをいじればいいの 神の人、土下座するので教えてくださいませ。 pserverでは、passwdファイルに user0:**************:cvsuser user1:**************:cvsuser user2:**************:cvsuser ってしとけば、user0〜2まで代理ユーザcvsuserの権限でリポジトリ内を操作してくれてたわけですが、 extssh とかを使うと、ログオンしたユーザの権限でファイルが書かれてしまいます。 複数ユーザを代理ユーザにまとめるにはどうしたらいいのでしょう? >>134 同じuid,gidでlogin nameの違う複数のaccountを作ったら? サーバがunixなら。 >>136 だってsshでloginしてるのと同じことだからな。 もしくはanoncvsshをちょこっと改造すれば比較的簡単にできそうだが。 というかそもそもそんな状況になることがおかしいぞ。 group writableにするとか手はないのか? 強引な手っていうか、135は昔から割とよく使う手だよ。 特にuid=0でよくやる。toorとかsuhogeとか。 >>140 そもそも俺には toor 自体があまり良い習慣だとは思えないが。 >>142 suhoge が何か分からんので何とも。 Anyone want the commit bit for my suicide...? >>145 Why do you say anyone want the commit bit for your suicide? >>148 M-x doctorで実行されるのはElizaのelisp実装にすぎない。 cvs tag と cvs rtag のちがいについておしえてくださいませんか。 げんざいのわーくすぺーすにちぇっくあうとされてるりびじょんをたいしょうに するか、あるもじゅーるのにんいのりびじょんをたいしょうにするかのちがいです >>150 ,151 スレ違い。 ttp://pc8.2ch.net/test/read.cgi/prog/1097001387 >>150 rtagはめんどくさい、historyに記録される。 後はみかままにでも教えてもらえ。 Solarisでcvs自体ではなくて cvswebの類で皆さんなに使ってますか? 1.11系と1.12系では結構な違いがあるみたいですが、 CVSってまだ育ってるんですか? WinCvsは2.0じゃないと1.12系のプロトコルに対応してないみたいなので、 わざわざ1.11系のを入れる必要がある。 一応Subversionへの移行も視野にはあるけど、いろいろめんどい。 modulesを使ってできるようなファイルの共有ができないようじゃあ 使う気も失せる。 >>161 それは「ディレクトリ」の共有らしいんよねぇ。 余計なファイルがいっぱい付いてくるのはちょっといやかも。 とはいえ、Subversionも無視はできんからいろいろ調べて みてる。俺にはまだちょっと早いかな。 cvs update -j aaaa -j bbbb と同じことをEclipse上でやりたいんだけど、できる? 「置換」>「別のブランチまたはバージョン」 「チーム」>「マージ」 か? 「チーム」>「マージ」でできました。ありがとう! 開始点・終了点を指定できたのね。 pserverとext:sshのそれぞれのメリットデメリットって pserver CVSの上だけで、独自のアカウント・権限管理ができる。がパスは平文。 ext:ssh 接続はセキュアだけど、サーバ上でのアカウント・権限管理に気を使う。 ってことでOK? つっこみよろしく。 >>166 違いはこれだけでは? pserver パスは平文。 ext:ssh ↑このへん subversion マンセー cvs なんて使ってる奴は糞 linux kernel 以外で git 使ってる奴いないの? SVNは、個人的には使ってるけれど 仕事場では$Id$の変換をサーバ側で 強制できないので使うのを諦めた。 一年以上前に出たのに、1.3って全然使われないね。 だれか、#cvs.wfl〜の消し方わかる? linuxで。 修正したファイルに実行権がついたまま 間違ってコミット。。 チェックアウトしたら全部のファイルに実行権がorz 1つ前のバージョンに戻す方法はないでしょうか。。 >181 ご回答どうも有難うございます! しかしながら、*,vがある場所へのアクセス権がないために *,v から実行ビットを落とすことができません。 この場合はやはり cvs update -r バージョン名 とディレクトリごとに地道に繰り返すしかないのでしょうか >183 ハイ、、腹をくくって依頼してみました。 ファイルが元に戻ってくれることを祈るばかりですorz 無料で使えるCVSサーバをご存知の方はいらっしゃいますか? あくまで私的な利用なので、sourceforgeを利用するまでもない、というレベルです。 >>185 はCVSサーバをホスティングしてるといいたいの? >>185 俺の家にあるマシンでCVSサーバは無料で使えてるよ。私的な利用もOKだし。 192.168.0.1。 cvsコマンドを実行すれば普通に使える。どんどんやってくれ。 あのぉ、192.168.0.1 は、 わたしが使っている IP アドレスですので 勝手に使わないでください。 なおこの件に付いては、 JPNIC にも通報済みです。 HGコマンド foooooh! ttp://www.selenic.com/mercurial/ Mercurialはなんだかモダンな感じがするね。 試しに使ってるけどとにかく気楽。 分散型SCMだから簡単にリポジトリをコピーできるし、 ローカルで好き勝手できるのがいい。 CVSやSubversionと比べてどこがどうなの? いまさらCVS以外を使うなら、Subversionかなあって思ってるんだけど 分散型SCMのいいところは全ての利用者がバージョン管理の恩恵に 与れるところじゃないかな。一度手元にコピーしたら同期する以外で ネットにアクセスしないってのもいいところ。ログも差分も見放題。 そのプロジェクトが分散型SCMを使ってればの話だけど。 プライベートで使うなら分散型でも集中型でもCVS以外の最近のやつなら どれも大した差はないように感じる。 Mercurialはリポジトリの複製=ブランチ=ディレクトリのコピーってのが気に入った。 ちょっと枝切って実験して、気が向いたらメインにマージして、 いやならディレクトリごと削除するだけ、ってのが気楽。 CVSでもそういう使い方ができるっちゃーできるんだけど。 メインに影響を与えないように手前でブランチ切って、 それをさらにメインに追随するようにできるの? うんそう。変更履歴とかもちゃんと付いてくる。 っていうかメインとかブランチとかは運用上の区別で、 全てのリポジトリは対等なんだけど。 >>197 だけどパッチを本流にフィードバックするモチベーションが薄れるという デメリットもあるんだよね。 コミット権のあるメイン開発者には分散型で、それ以外の利用には CVSモデルというのがいいかもしれない。 commitするときのメッセージで、リポジトリ内を検索できないの? namazuでやろうと入れたら、バイナリファイルをうまくわけることできなくて、検索結果が文字化けで。 cvswebの拡張版みたいなのがあれば良いなと。 >>202 thanx。試してみます! しかし、何か仕様変更したときに、一緒にcommitしたファイルを探すのってすごく面倒。 こまめにバージョンタグ付けるのが良いのか、cvsはそこまで想定していないのか。 >>204 なんだかうまく動作しませんが、情報ありがとうございます。 >>205 影響範囲調べるのに、そのとき、どのファイルが変わったか知りたくて。 cvs2plののち、HTMLに変換できるのがあるようなので、cron使ってHTML更新するようにすれば解決するかなと期待しています。 >>203 そういう目的のために CVSROOT/loginfo があるんだけど、これはcommit された時に実行するスクリプトを指定するものなので、commitずみのログに 対しては無力だね。 >>207 cvs historyで同じ時間にcommitしてるのを調べるとか。 >>207 ,208 ありがとうございます。 ↓こんな感じで既存分に対しても表示できたらなと思っています。いつも、CVSROOT内をgrepして同時にcommitしたのを探すのが面倒で。 2005-12-01 14:00:00 ●●の修正←commit時のコメント /src/java/sample.java /src/perl/sample.pl 2005-12-01 11:00:00 ●●の機能追加←commit時のコメント /src/perl/sample.pl このスレで勧めるのも変かもしれんが、Subversionに乗り換えてみたら。 svn logの出力がまさにそんな感じ。 cvs2svnで一応既存のも変換出来るし。 >>209 既出ですが、cvs2cl がピッタリだと思いますよ。 >>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ではサーバ側が ほとんどの処理をします。 >>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開発に参加する資格なし cvsから変換したい奴向け俺様メモ。 必ずcvs2svnを使え、cvs2gitやcvs2bzrやcvs2hgは不可だ。 git-svnとかhg convert直接変換とか、cvs-fast-export使おうとする奴は cvs2svn経由が如何に正確か認識しろ。 cvs2svnの後、hg convertで一旦hgにしろ、 これでタグが正しくタグになる。 それから他のVCSに変換しろ。 だが元からsvnのリポジトリをhg convertするな。 svnのタグをサイレントブランチしているクソリポジトリを正しく変換出来ないぞ。この場合はgit-svnが正解だ。 cvsサーバーをインストールしようと思っているのですが、 subversionのようにApacheは必要ですか? Nginx派なのでできればApacheは入れたくないのです CVS版の方が安かったのでそちらを買ったんですが、通常版にくらべて機能制限とかありますか? ちなみにファミマです。 ファミマとセブンのウィーフィーのウエブ認証を自動化するスクリプトとかないですか? マ イ ン ド コ ン ト ロ ー ル の手法 ・沢山の人が、偏った意見を一貫して支持する 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法 ・不利な質問をさせなくしたり、不利な質問には答えない、スルーする 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法 偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い 靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト 10人に一人は カ ル ト か 外 国 人 「ガ ス ラ イ テ ィ ン グ」 で 検 索 を ! 省略語は嫌いだ。それは電子CVS。電子CVSとCVSは違う。 CVSと言ったらコンビニのこと。勝手に電子を省略しないように。 ブランチの根元にタグ打ってなかったので今から打ちたいんだが、 どうすれば根元を指定できるかな? 要は cvs merge -jBRANCH が探してくれる根元に対しタグを打ちたい。 CVS 1.11.5 がコアはいて死ぬので 最新の 1.11.23 に入替えた。 gnu/ じゃなく non-gnu/ 以下にあるのね今は。 最終更新が 2008年かぁ 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 H37F9KGLHR 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方 時間がある方はみてもいいかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 BSCNL read.cgi ver 08.0u [upliftProject] - 2023/07/09 Walang Kapalit ★ | uplift ★ 5ちゃんねる