1 :デフォルトの名無しさん:2005/04/10(日) 22:58:38
バージョン管理システムCVSについてのスレッドです。

前スレ : 「CVS導入スレ?? Rev.2」
http://pc8.2ch.net/test/read.cgi/tech/1065829553/

関連スレとリンクは>>2を参照

2 :デフォルトの名無しさん:2005/04/10(日) 23:00:03
関連リンク
http://www.cvshome.org/
http://www.wincvs.org/
http://www-vox.dj.kit.ac.jp/nishi/cvs/cvs.html
http://kahori.com/j-cvsbook/
http://www.sodan.org/~penny/vc/cvs-ja.html

関連スレ
Unix板 : 「CVS 1.3」
http://pc8.2ch.net/test/read.cgi/unix/1093611448
LInux板 : 「Subversion スレッド その3」
http://pc8.2ch.net/test/read.cgi/linux/1100622362

LOCや生産性など、CVSと直接関係のない話題はご遠慮下さい。

9 :デフォルトの名無しさん:2005/04/11(月) 13:31:00
ごった煮使ってるけど、SSHでトンネルすると、ログウィンドウの表示が変。
たとえば、グラフ表示させて適当なリビジョンの情報見ようとすると、
日付は"1900/0/0 0:0:0"ばっかし、まともなのはコミット時のメッセージぐらい。
コマンドプロンプトから直接コマンド打ってログとればちゃんと表示されるから、
たぶんWinCvsがおかしいんじゃないかと思うんだけどねぇ。

Subversionは、「リポジトリが壊れた」なんて話題が出ているうちはまだ使いたくないなあ。

25 :デフォルトの名無しさん:2005/04/24(日) 14:48:56
WinCVSの肝心のGUIが糞な件について

87 :デフォルトの名無しさん:2005/07/16(土) 18:31:51
cvs import するソースツリーに画像などのバイナリファイルが含まれています。
cvs add するときはバイナリファイルだけ -kb すればいいと分かったのですが、
import の場合はどうすればいいでしょうか?


88 :デフォルトの名無しさん:2005/07/16(土) 18:41:23
>>87
こんな感じかな?
cvs import -I ! -I CVS -W "*.png -k 'b'" -m "Message" path vendor release
私ゃ横着もんだから
cvs import -I '*' path vendor release
してからcvs add しちゃうけど。

241 :デフォルトの名無しさん:2005/11/17(木) 08:05:14
「従って」は不要。写真だろうがイラストだろうが著作物に著作権が
発生するのはあたりまえ。
フォントももちろん著作物。


249 :デフォルトの名無しさん:2005/11/19(土) 17:45:55
CVSってロールバック機能や、ソースコードの比較とかできないじゃん。
使えないよ。

VSSのほうが上。


270 :デフォルトの名無しさん:2005/11/21(月) 18:14:24
今日からCVSを使い始めました。超初心者です。
質問なのですが、すでに出来上がってしまったソース群をCVSでimportして
最初にcheckoutすると、全てのファイル日付がimportした日付になってしまうの、
何とかならないのでしょうか?そーゆーものですか?

273 :デフォルトの名無しさん:2005/11/21(月) 20:02:08
>>270
そういうものです。
そうならないとtimestamp見てるmakeがサボります。

274 :270:2005/11/21(月) 20:47:00

>>273
thx !
ついでに、もう一件、お願いします。
import 時、-I で無視したファイルって、checkoutしたら戻りませんよね?
アイコンファイルなど、いつも必要だけどCVSで管理する必要のないファイルとかは、
やはりバイナリでちゃんとCVS管理するものなんでしょうか?
-I ってのは、復元する必要すらないファイルに限られるのでしょうか?

277 :デフォルトの名無しさん:2005/11/21(月) 23:20:00
>>274
「importしていない=リポジトリに存在しない」
なんだから、チェックアウトする術がない。

makeに必要なファイルは全てimportするのが吉。
(ただし、make時や統合環境起動時に自動生成されるものは除く)

279 :274:2005/11/22(火) 11:27:19

>>277
なるほど、どうもありがとうございました。

でも、libファイルがバイナリ指定してimportしてcheckoutしても戻ってこない…なぜ??


380 :デフォルトの名無しさん:2006/04/20(木) 23:28:55
すごいの見つけてしまった
ttp://d.hatena.ne.jp/seiunsky/20060420/1145536580


444 :デフォルトの名無しさん:2006/07/11(火) 08:35:38
>>380
うはwちょ、それおれのプログwww

やっぱり、普通はそんな運用の仕方ってしないんだよね?

445 :デフォルトの名無しさん:2006/07/11(火) 12:57:36
>>444
してるところもあるよ。
まぁ普通は単体テスト完以降にそのような管理をしたりする。
その管理する人たちのことをライブラリアンと呼ぶとこもある。

448 :444:2006/07/11(火) 22:47:04
>>445
あぁ、確かにライブラリアンって呼ぶこともあるね。聞いたことある。

> まぁ普通は単体テスト完以降にそのような管理をしたりする。
なるほど。確かに単体テスト以降なら慎重になることやバグ修正の周知って意味でもメールの重さがでてくるから、やる意味がわかるよ。

でさ、こういう状況で上司とか先輩にどうやって説得すれば良いんだろう。
上司&先輩曰く、ヒューマンエラーを防ぐためだって。
ファイルを誤って消してしまったりする可能性(=アクセス権のある人の人数)を下げるためだそうで。

そういうことを考えるからこそ、バージョン管理システムを導入するんじゃねーのか、とか思ったりするけど。
当時は(今もだけど)あんまり良くわかってなかったから、「そういう考えもあるかぁ」と思って食い下がれなかったんだよね……。

450 :デフォルトの名無しさん:2006/07/11(火) 23:06:29
>>448
どの程度の規模の会社(チーム)で、どの程度の規模のプロジェクトなのか
不明なのでざっくりしたことしか言えないけど、ライブラリアンが居るということは、
ライブラリアンがリリースしたものに責任を持つということね。

各々が勝手にリポジトリにアクセスしても結構だけど、他のチームが
バグ入りかもしれないファイルをcvs updateして取得してしまって、それを
使って自分たちのモジュールをテストしたりした日にゃ、現場は混乱だよ。

特に大きなプロジェクトでは、単体テスト以降は、バグの発生確認と、
原因の特定、バグフィックスの確認と修正済みファイルのリリースを
管理しなきゃならないから、個々人が勝手にやると困ったりする。

小さな会社(チーム)で、なおかつ同じ場所で開発してるなら、その間に
いる人は余計だけどね。

588 :デフォルトの名無しさん:2007/04/04(水) 20:43:19
1つ教えて下さい。
CVSで自動ビルドしようと思っているのですが、上手くいきません。

自動ビルドは以下のように動くスクリプトを作りました。
 1.cvs checkout する
 2.ant でビルドする
 3.ビルドした実行ファイルを、ウェブ領域にコピーする(公開する)

コミットしたときにこのスクリプトを呼び出すように CVSROOT/loginfo などに設定したのですが、上手く動きません。

というのも(おそらく)コミットしている時に自動ビルドスクリプトが呼び出されてチェックアウトしようとするのですが、コミット中なのでロックがかかっていてチェックアウトが出来ないのです。結果いつまでもロックが解除されるのを待つだけになってしまいます。


みんなどうやって自動ビルドをやってるの????
毎晩4時に自動ビルドなの?
出来ればコミットごとにビルドしたいんだけどなぁ…。

589 :デフォルトの名無しさん:2007/04/04(水) 21:14:42
コミットを検出してから適当な時間が経ってからビルドすればいいだけじゃないの?

590 :デフォルトの名無しさん:2007/04/04(水) 22:08:02
>>588
うちは深夜に自動ビルドしてるよ。
コミットはいつでも自由に行って良いというポリシーな上に、
ビルドに加えて単体テストとカバレッジ測定、そのレポート生成までやってて
時間がかかる(30分程度)ので、
うちじゃコミットで自動ビルドは非現実的。

ところで、コミットで自動起動されたビルド中にコミットされたらどうするつもり?

591 :デフォルトの名無しさん:2007/04/04(水) 22:34:57
>>588
うちはいまんとこ早朝と昼休みに自動ビルドしてる。

いまテキトーに考えると、最終コミットからn分経ったら自動ビルド
(や単体テスト・カバレッジ測定など)を起動するなら、
こんな手順でいいんじゃないかな。

1) loginfoでどっかにファイルを作る。例えば /var/ のどっかに。
2) cronで数分おきに1)で作ったファイルを調べて、
ファイルが存在していて、なおかつファイルの更新日時からn分経過していれば
2.1) 1)のファイルを消す。
2.2) CVSからexport・ビルドなどを実行する。


592 :デフォルトの名無しさん:2007/04/05(木) 00:04:22
>>588
サーバにチェックアウトしたものを置いといて
コミットのたびコミットされたファイルにアップデートかければいいんじゃないかな
毎回チェックアウトじゃ時間かかるでしょ

因みに、CVSはロックファイルを作りに行くからコミットされた時と同じプロセスでチェックアウトするとアウト
&とかつけて回避するしかないみたいよ

593 :588:2007/04/05(木) 03:00:43
いやいや、こんなに親切な回答が貰えるとは思ってませんでした。感謝感謝。

>>589
やっぱそれが一番なのかな…。

>>590
周りでもビルドはコストがかかるから、コミットごとのビルドはやめとけ
という意見が多かったですよ。でも私の場合は1人開発だし、コミット回
数も少ないから(まとめてコミットする癖がある)イケルかなぁと思った
んですが。

>ところで、コミットで自動起動されたビルド中にコミットされたらどうするつもり?

・・・どうしよう。(--;

>>591
ごっつあんです。まあそういうやり方になるんでしょうなあ。

>>592
いやまあチェックアウトかアップデートかと言われりゃその通りなんですが
質問の主旨はそこではないわけで。でも親切にご指摘ありがとやんす。

ロックされちゃう問題は、やっぱそういう回避方法しかないんですね。
それが分かっただけでも収穫です。


・・・・・・・・・まあ、cron で解決しますかね。
皆さん、ありがとうございましたー。

594 :デフォルトの名無しさん:2007/04/05(木) 07:54:14
>>593
一人開発なら、「コミットしてから裏でビルドする処理を起動するスクリプト」を作ればいいじゃない。

602 :デフォルトの名無しさん:2007/04/26(木) 10:18:47
マジレスすると、CVSを使い込んだ人間ほどSubversionはもっとも嫌な選択肢。
俺の職場ではSubversionで始めたプロジェクトを、きりのいいところでCVSに
変更しようかという声さえある。

ところで、TortoiseCVSで、今ない(消した)ファイルをリポジトリから削除ってできないのかな。
別のツールでファイル調整した後にリポジトリに反映させたいときとかに不便。

TortoiseCVSって、一般的には絶賛されてるけど、使いにくくてかなわんがなあ。
WinCvsは淘汰されてしまったんだろうか。コードの扱いなんかはTortoiseの方が優れてるしなあ。
しょうがないから最新版を修正しようかと思ったら、VC++2005 Expressではエラーになるし。

607 :デフォルトの名無しさん:2007/05/02(水) 23:03:41
どうでもいいけど、とりあえず>>602です。

確かにSVNコミュニティの腐った根性は嫌いだが、まさかそんなことだけでSubversionを評価してるわけじゃない。
そもそもSVNコミュニティの腐れ根性を知っているのは職場で俺ぐらい。

ウチの職場で不評だったのはだいたいこんなところ。
タグ/ブランチが結局コピーで、実質ブランチがいっぱい出来るだけとか、また、コミットすると、
変更してないファイルのリビジョンまで無意味にあがったりというリポジトリの基本思想とか、
Subversion単体(の通信)では、リポジトリに細かな(といっても基本的だと思うが)アクセス制御が
かけられなくて、結局Apacheや外部のモジュールに依存しているとか、TortoiseSVNのリビジョングラフ
は使い物にならないとか、そういったところ。

俺も時代がSubversionに流れているなら、そろそろCVSから移行しようかと思っていたんだけど、
調べれば調べるほど嫌になってくるんだよね。
間違ってれば誰か正してくれ。

632 :デフォルトの名無しさん:2007/06/26(火) 10:21:42
Delphi4で、ソースをCVSにいれてみました。
ソースのうちdfmファイルはバイナリですが、convert.exeを通したらテキストにできます。
(5以降は開発環境自体がテキストで読み書きできる)
これで管理してみようと思ったのですが、マージで詰まりました。

開発時はバイナリで保存して、テキストにしてcommitします。
マージ時はテキストで保存して、クライアントではまたバイナリに戻します。
ここでテキストとバイナリのどちらが主とも従ともいえなくなって、
変換が追いつかなくなってしまいました。
似たようなケースがあったら、対処法とか知りたいです。

635 :デフォルトの名無しさん:2007/06/27(水) 00:47:41
いや、Subversion だったらバイナリのままコミットとしても
ちゃんと差分で格納してくれる。

なんかのツールでテキストにできるなら、差分も見るときだけ
テキストにするようなスクリプト書いておけば、通常はバイナ
リしかないので、どっちが主かなんて悩まなくても済むでしょ。

636 :632:2007/06/27(水) 10:17:24
テキストを主として考えるなら、
Delphi4自身がテキストを読めるようなプラグインが必要そうです。
今のところ見つかっていません。

バイナリファイルだけれど、差分・マージの前にテキストに変換とか
そういう機能は無いでしょうかね?
WinMergeのプラグインみたいなイメージです。

subversionはよく知らないんですが、
コミット時に差分とるとしてマージはどうなるんでしょうか?
バイナリでマージってイメージつかめなくて・・・


637 :デフォルトの名無しさん:2007/06/27(水) 12:00:26
>>635
CVSでも一応差分で格納される。効率は悪いかもしれないが。

639 :デフォルトの名無しさん:2007/06/27(水) 12:24:57
>>637
区別無しに diff かけてるだけだよね?
0x0a がたくさん入ったバイナリファイルについて小さな変更したときは
それなりのサイズに収まるとか。

641 :デフォルトの名無しさん:2007/06/27(水) 23:35:22
>>636
> バイナリでマージってイメージつかめなくて・・・

すまん、マージで困ってたんだよな。バイナリの直接マージは無理。

テキストにしてマージしてからバイナリに戻してコミットするしかないと思う。

TortoiseSVN とか使えば、拡張子毎にマージツールを指定できるから、
バイナリ ⇔ テキストのコマンドが外部から呼び出せれば何とかなるような気
もする。

つーか、コミットする時に dfm ファイルだけテキスト化して、チェックアウト
する時に dfm ファイルだけバイナリに戻すラッパーを書いたほうが早いかも...。

>>637
ん? どのバージョンから?

昔の CVS ではバイナリは各バージョンをそのまま格納するしかなかったはずだが。

>>639
その状態でキーワード変換とかしないようにする方法があるの?

667 :デフォルトの名無しさん:2007/09/18(火) 10:46:43
rmしてcvs updateじゃダメなん?

760 :sage:2009/04/17(金) 08:49:08
cvs update した後、ファイルのどこがどのようにupdateされたのか知る方法を教えてください。。

761 :デフォルトの名無しさん:2009/04/17(金) 13:08:48
一つ前のリビジョンと比べりゃいいじゃん。

762 :デフォルトの名無しさん:2009/04/17(金) 14:13:34
1. コピーをとる
2. cvs updateする
3. diffをとる

763 :760:2009/04/17(金) 20:25:50
>>761の方法では無理だと思います。

>>762
やはりそれしかないのか。。
コピーとってなくて、アップデートした後にアップデート前の状態に戻すことってできないのでしょうか?

764 :デフォルトの名無しさん:2009/04/18(土) 22:27:06
>>763
「アップデート前の状態」がどこかに保存されていれば可能だが…

そもそも、1つのファイルを複数人で同時に修正するのが変。

おそらく、 >760 は、他人が修正した箇所が何処か知りたいのだろうが
モジュール分割を間違っているか、運用が不味いかのどちらか。

766 :デフォルトの名無しさん:2009/04/20(月) 11:13:29
「update前の状態」は2種類考えられる。
一つは一つ前のリビジョンであり、もう一つはローカル修正済み。
前者は勿論リポジトリから取り出せるし、後者はマージの残骸が残っている筈。
何が不満なのか判らんが、自分のやりたいことも他人に伝えられないから
ツールを使いこなすこともできないと言うことなんだろうな。

767 :760:2009/04/20(月) 19:56:30
みなさん言いますね。情報不足で申し訳ない。

updateした後、
マージ(Need Merge)された場合はたしかにバックアップが残るから元に戻せるけど、
パッチ(Need Patch)の場合はバックアップは残らない。

使いこなしてる>>766、後者の場合に元に戻す方法を教えてください。

>>764
モジュール分割してもメインモジュールは複数人が修正する可能性があるだろ。
もしかして、複数人でやったことない?

768 :デフォルトの名無しさん:2009/04/20(月) 20:24:05
cvsでcolordiff使いたいんだけど
svnみたいに環境変数か設定ファイルを使って
diffを差し替えることは可能?

769 :デフォルトの名無しさん:2009/04/20(月) 20:26:18
>>767
うっとおしいけど、編集権を奪うようにしてるから
とくに競合したことは無いな。
人間同士でのすり合わせがギスギスするけど。

770 :デフォルトの名無しさん:2009/04/20(月) 23:15:57
>>767
一つ前のリビジョンじゃなくても、自分が最後にコミットしたリビジョンまで
さかのぼれば見られるだろーよ。そういう GUI ツールもあるだろ。
頭かてーやつだな。

>>768
環境変数ではでけん。
Windows なら亀とか使えばいいんでない。
俺は Linux では、リポジトリの最新を /tmp とかに取り出して、
それとローカルコピーとを vimdiff に渡すスクリプト書いて
使ってた。

771 :760:2009/04/21(火) 00:23:32
>>770
一つ前のリビジョン??
お前は頭が柔らかすぎて何を言ってるのかわからんが、
とりあえずCVSだけでは無理ってことかでおK?

しかし、俺以外にこの疑問をもたないのはなぜ?
(複数人での開発で)updateコマンド打った後に、
バックアップファイルが作られてないファイルの自動的変更された内容って気にならないの?

実行して不具合が生じた時、解析に困ると思うんだが。

832 :天使 ◆uL5esZLBSE :2011/07/04(月) 04:04:26.61
> win7 32bit クリーンインスコ出来た
↑↑↑ハアァア???????
氏ねよゴミ



http://hibari.2ch.net/test/read.cgi/tech/1113141518/l50人気ブログランキングへ