CVS導入スレ〜 Rev.3
■ このスレッドは過去ログ倉庫に格納されています
バージョン管理システムCVSについてのスレッドです。
前スレ : 「CVS導入スレ〜 Rev.2」
http://pc8.2ch.net/test/read.cgi/tech/1065829553/
関連スレとリンクは>>2を参照 えーと、前にどっかに書いたな…。
>>607からの流れ読んでくれ。
Subversionでの節目管理はどうやるんだろう?
気軽にタグつける(=コピー作る)のか?
それともリビジョンメモるのか?んなアホな…。 CVS脳のままSubversion使ってるんだろ。 >704
>607 に対するコメントついてるから、とりあえず 1 点だけ誤解してそうなところだけ。
コピーっつっても実体コピーするわけじゃないから、容量的にも時間的にもコストほとんどかからんよ? windows環境です。
コマンドラインで構わないのですが、インストール無しに
cvs,svnを使うためのツールをどこかから落とせませんか? すいません。
他のマシンからコピーしてどうにかしました。 cygwin のCVS (1.11.17) と Emacs (Meadow 21.4.1) をWinXP で使ってるんですが、
いつの間にか出来てる .#ファイル名.rev番号 ってファイルは何でしょうか?
消しても良いんでしょうか? >>710
updateでローカルコピーとのマージが行われたときにできる、
マージ前のバックアップじゃなかったかな。
比較用として自分が必要じゃないなら、消してしまっても動作には影響しない。 >>711
ありがとう。
少し古いリビジョン番号で残ってるから何かと思った。
マージしたときに発生してたのか、なるほど。 unicodeをサポートとhttp経由でアクセスしたりデータを暗号化したりできるものがあるか教えてください。 今、CVS サーバーを EUC で運用していますが、そう遠くない将来 UTF に移行する必要性が生じると思います。
その際、ファイル名は Samba を経由が比較的手軽だと思うのですが、今までのコミットメッセージは
どうすればよいのでしょう?リポジトリのファイルに変換ツールカマしてよいものでしょうか。それとも
コミットメッセージだけは EUC で運用を続けるしかない? これを機会にsubversionに移行するといいと思う。 ためしにCVS+Eclipseをちょっと使ってみて、すんなり導入、使用してたんですけど
Subversionの方がいいと聞いて、乗り換えようかと試行錯誤してます。
ちなみに、webアプリケーションです。
ちょっと疑問に思ったので質問させてください。
バージョンってか、リビジョン?がファイル単位じゃないので、基本的に別々のプロジェクトは、別のリポジトリにするっていうのは
わかったのですが、例えば、バージョン管理が必要ない画像とかが膨大すぎて、システムに関係した部分のみリポジトリに入れたい
時って、どんなふうにするのがいいのでしょうか?
たとえば、最初のインポート時に、必要なディレクトリごとに何度かimportっていうの試したんですけど、
そうすると、importの度にリビジョンがあがって、スタート時にリビジョン8からとかってことになって気持ち悪いのですが、
そういうもんなのでしょうか?
個人的には画像もすべてバージョン管理につっこんで、WEBアプリケーション全てをまるっと管理しても便利そうなのですが
うちのデザイナや更新する人たちにはちょっと敷居が高いので、システム部分だけ、管理したいなあと・・・
CVSの時も思ったけど、特定の拡張子とかディレクトリだけはずしてimportとか出来れば・・・
まあ、一旦全部いるものだけ別ディレクトリにコピーして、構成を作ってからimportすれば済むけど
ちょっと面倒かな〜
なんかもっと簡単な方法ありますか? ignore指定してもいいし、バイナリも(度々変更が入るのでなければ)管理しちゃっていいと思う。
リビジョンが増えるだけではリポジトリは太らないから大丈夫。 >>718
まず、どっちの話してんだ?
Subversion のことなら、そっちのスレにいけ。
俺は設定がめんどいから Subversion は嫌いだ。 いかん、SVNスレだとばっかり思っていた……
>>720
私はCVSは融通が利かないから嫌になった。 ignoreといえば、WinCVSのUIは酷いな。
importするときに、拡張子別にファイル選択した後に
ignoreの指定がある。逆だろw >>721
んじゃ来んなよ。布教活動でもする気か? レスありがとう〜
なんか偽物現れてる・・・まあ、いいですw
Subversionのスレあったんですね。
svnで検索して、無いと信じ込んでました。
いろいろ四苦八苦してますが、そっちへ行きます。
ありがとうございました。 cvsで間違えてcommitしたものを取り消すにはどうすればいいでしょうか?
一つ前のリビジョンをupdateで取得してcommit >>727
それ初めてやろうとしたときsticky tagにさんざん悩むのは基本
定石は
cvs up -p -r 前のバージョン番号 ファイル名 > ファイル名
cvs commit
でいいのかな >>720
TracにくっついてるSubversionの方が
よっぽど設定楽だ ファイル共有するために、リポジトリ内でシンボリックリンク張っても大丈夫ですかね? きちんと排他できなくなるからやめた方がいいと思う。 >>733
そうなんですか?
何でシンボリックリンクだと排他ができなくなるんですか?
後学のために…。 cvsは、リポジトリ更新中はリポジトリファイルの名前を使ったロックファイルを作るんじゃなかったっけ?
だとしたら、リンク経由で更新しているときに本体を更新かけたら拙いんじゃね? 勿論その逆も。
リンク側からは更新しないって運用ができるならいいのかも知れないけれど、それならリンクじゃなくて
適宜リポジトリファイルをコピーすればいいのだろうし。 >>735
なんと。
じゃあハードかシンボリックかという問題じゃないんですね。むぅ。
とりあえず今は一人で使ってるだけだからいいか(実はもうやっちゃった)。 WinCVSで格納するとき、下のようなエラーが出るのですが、どうしたら良いでしょう?
(フォルダ名とファイル名部分は、ちょっぴり書き変えました)
↓
cvs commit -m (none) a.txt (ディレクトリ S:\Src 内)
Checking in a.txt;
\\Server\CVS\Src/a.txt,v <-- a.txt
new revision: 1.197.2.1; previous revision: 1.197
cvs [commit aborted]: error writing to lock file \\Server\CVS\Src/a.txt,
*****CVS はコード 1 で終了しました*****
TortoiseCVSで、コマンドラインから
指定のフォルダをコミットする方法はありますか? >>738
TortoiseCVSではなくてcvs.exeを使えばいいと思います。 >>737
lock fileとか書いてあるからロックファイルが絡んでると思われる。
ロックファイルと言うのはリポジトリに一時的に置かれるファイルで
(ここから俺の予想だけど)
そのファイルがある状態だと他のプレイヤーがコミットできない(と思う)。
(つまりWin32APIのCRITICAL_SECTION構造体とかと同じような使われ方をしている(と思う)) pserverは使わず、NAS上(samba)に直接リポジトリをおいて、クライアントはWinCVSな人っている?
うまくいっていたら設定を教えて欲しいです。 WinCVSを使ってmedia player classicのソースコードをチェックアウトしたいんだがBAD CVSROOTの表示が出て全くできません。
認証方法はlocalでCVSROOTはhttp://guliverkli.cvs.sourceforge.net/guliverkli/を入れてる。
どうすればいいのか教えてください。 cvs使っていると、/tmp配下に、cvs〜bakっていう名前のフォルダがたくさんできるんだが、
これはなんだろう?作らないようにするにはどうしたらいいんでしょうか?
環境FreeBSD5.2
cvsNT2.503 Build2382をインストールしたんですが
リポジトリ追加するためのAddボタンが存在しません><
どうにかしたらでてくるんですか? MercurialのWindows版ってどっからDL出来るの?
http://mercurial.berkwood.com/
のURLだとサーバーにアクセスできないんだが…。 アクセスできて良かった。
ところで今度からは「バージョン管理システムについて語るスレ」
http://pc11.2ch.net/test/read.cgi/tech/1215520728/l50
の方に書き込むと良いよ。
>752
ありがとうございます
>753
了解しました。
今後はそちらのスレに書き込むようにします。
$ cvs diff -r HEAD
とすると、cvs最新のファイルとローカルファイルを比較してくれますが、
このオーダーを逆にして、ローカルを古いものと仮定し、ローカルとcvs HEAD
を比較する方法はありませんか? ファイル単位ならcvs update -pしてdiff localFile -で。 XPにCVSNT 2.5.03.2260をインストールしてGUIからリポジトリを作成したのですが、
クライアント(wincvs 2.0.2.3)からCVSROOTがチェックアウトできません。
cvs checkout: cwd=D:\cvs ,current=D:\cvs
cvs server: User hoge cannot read CVSROOT
どうすれば、CVSROOTをチェックアウトすることが出来るでしょうか?
CVSROOT以外のモジュールはチェックアウトできました。 Windows 環境で WinCVS の cvs.exe で cvs init しようとしたら、
リポジトリのパスを指定する所で
ドライブレターの指定がサーバ名の指定と誤解されて失敗してしまいます。
一体どのようにすればいいのでしょうか? cvs update した後、ファイルのどこがどのようにupdateされたのか知る方法を教えてください。。 1. コピーをとる
2. cvs updateする
3. diffをとる >>761の方法では無理だと思います。
>>762
やはりそれしかないのか。。
コピーとってなくて、アップデートした後にアップデート前の状態に戻すことってできないのでしょうか? >>763
「アップデート前の状態」がどこかに保存されていれば可能だが…
そもそも、1つのファイルを複数人で同時に修正するのが変。
おそらく、 >760 は、他人が修正した箇所が何処か知りたいのだろうが
モジュール分割を間違っているか、運用が不味いかのどちらか。 >>763
どういう運用してるかぐらい書けよな。
update(マージ)前のバックアップファイルが自動的に残るはずだけど
残ってないか?>>710-711 あたり。 「update前の状態」は2種類考えられる。
一つは一つ前のリビジョンであり、もう一つはローカル修正済み。
前者は勿論リポジトリから取り出せるし、後者はマージの残骸が残っている筈。
何が不満なのか判らんが、自分のやりたいことも他人に伝えられないから
ツールを使いこなすこともできないと言うことなんだろうな。 みなさん言いますね。情報不足で申し訳ない。
updateした後、
マージ(Need Merge)された場合はたしかにバックアップが残るから元に戻せるけど、
パッチ(Need Patch)の場合はバックアップは残らない。
使いこなしてる>>766、後者の場合に元に戻す方法を教えてください。
>>764
モジュール分割してもメインモジュールは複数人が修正する可能性があるだろ。
もしかして、複数人でやったことない? cvsでcolordiff使いたいんだけど
svnみたいに環境変数か設定ファイルを使って
diffを差し替えることは可能? >>767
うっとおしいけど、編集権を奪うようにしてるから
とくに競合したことは無いな。
人間同士でのすり合わせがギスギスするけど。 >>767
一つ前のリビジョンじゃなくても、自分が最後にコミットしたリビジョンまで
さかのぼれば見られるだろーよ。そういう GUI ツールもあるだろ。
頭かてーやつだな。
>>768
環境変数ではでけん。
Windows なら亀とか使えばいいんでない。
俺は Linux では、リポジトリの最新を /tmp とかに取り出して、
それとローカルコピーとを vimdiff に渡すスクリプト書いて
使ってた。 >>770
一つ前のリビジョン??
お前は頭が柔らかすぎて何を言ってるのかわからんが、
とりあえずCVSだけでは無理ってことかでおK?
しかし、俺以外にこの疑問をもたないのはなぜ?
(複数人での開発で)updateコマンド打った後に、
バックアップファイルが作られてないファイルの自動的変更された内容って気にならないの?
実行して不具合が生じた時、解析に困ると思うんだが。 >>771
|バックアップファイルが作られてないファイルの自動的変更された内容って気にならないの?
|実行して不具合が生じた時、解析に困ると思うんだが。
そういう問題が起こらないように、「運用で」排他制御するんだろ。( >769 の言うように )
この運用だと、リポジトリに全ての履歴が記録されるから問題にならない。
職場では、そういうヤバ目のモジュールには専用の「ぬいぐるみ」が用意してある。
(ぬいぐるみにモジュール名を書いた札が下げてある:ぬいぐるみを机に置いている人のみが修正可というルール)
趣味の悪い ぬいぐるみ ばかりなので >769 のようなギスギスした感じにはならない。
(皆、机の上に置いておきたくないから短時間で解放される)
もう一点。
そんなに気になるなら、CVSから取得したフォルダで作業しなけりゃいい。
一旦、別の作業フォルダにコピーして、修正後に手動でマージ作業を行えばいい。
>>771
だんだん素になってきたな。笑える。
何のためにリビジョンがあると思ってる?
> しかし、俺以外にこの疑問をもたないのはなぜ?
ほかの人は普通に使いこなしてる、お前がなんもわかってないだけ。
> とりあえずCVSだけでは無理ってことかでおK?
できるが、コマンドだけじゃしんどい、といったところ。
TortoiseCVS とか使ったことないのか? なんか適当なフロンドエンド使ってればマージがあったファイルはわかるじゃん。
マージが発生したならどのみちdiffをチェックするんだから、そのときわかる。
それがわからないようなら多分コミットするまでの作業単位のとりかたを間違えている、
そもそもコミットログとかChangeLogとか書けない。 んー
checkoutした時のリビジョン、もしくは最後にcommitしたリビジョン、これと
update実行時のリポジトリのリビジョン
この二つリビジョン間の差分データ、
これを使って現在作業中のファイルに対してpatchをあてる
これがupdateという作業じゃないのか?
だったら、updateによりどこが変更されたかなんてのは
(他の人も言ってるように)リビジョン間のdiffを見ればわかるんじゃないのかね。
そりゃコマンド一発というわけにはいかないのかもしれないが
必要ならば元に戻すことも出来そうだけど。
update前と後の編集でのコンフリクト次第だとしても。 >>772
うーん。そんなめんどくさい運用でないと解決できないのか。
他の作業者がぬいぐるみが渡せる範囲にいればいいのだが・・・。メール?うーん。
それとやはりコピーをとる方法しかないのか。
>>773 >>775
coした後、ローカルで編集したファイルにはまだリビジョンが割り当てられてないわけで、
リビジョン間のdiffをとればいいっていうけど、無理じゃない?
update前なら確認可能だけど、update後にdiffをとるのは不可能だよね?
つまり、update後にどこが自動更新されたかはコピーをとっておかないと確認不可能(やり方がわかりません)
それを教えてくださいいい。
>>774
その「どのみちdiffをチェックするんだから」がキーかも。
どれとどれをdiffチェックするの?
そりゃ、現在は記録されてない(最新に書き換わってる)かもしれないが
CVSディレクトリに「coされたりビジョン」が記録されていたはずだよ。
少なくとも、日付でリビジョンを想像することくらいは簡単に出来る。 まさかとは思うが、もしかして「両方過去のリビジョンの間のdiff」を取れないと思ってるのか? >>776
-Cオプションを使えばいいだろ。
手元にバックアップファイルが勝手に作られるから
そいつと比較しろよ >>768
colordiff は分からないけど、vimのシンタックスカラーをよく使ってる。
$ cvs diff -c3 -p xxx.c | vim - -R
こんな感じ。 >>780
colordiffは便利だよ。全部perlだから、どっかから拾って。
$ cvs diff -c3 -p xxx.c | colordiff
こんな感じ。 CVSで、プロジェクトごとにリポジトリを作成している人っている? >>783
どういう心積もりでプロジェクトごとにリポジトリ分ける気になったの?
規模がめちゃくちゃでかいとか? ていうか、面倒くさくない? プロジェクト毎に客先リポジトリだったり社内リポジトリだったり移行する必要があったりと千差万別だから。
まぁ、集中型はSubversionに移行しつつあるし、社内では分散型に移行しつつあるけど。 >>784
協力会社の人を頼むときなど、他のプロジェクトのソースを見せちゃ不味い事がある。
場合によっては(契約によっては)作業メンバ以外はソースを見れてはならない等の制限が付いたりする。
そのような場合にはリポジトリを分けるしか手がありません。 >>785
社内で分散って結構とがってるね。スレチだけどなに使ってんの? ttp://ftp.gnu.org/non-gnu/cvs/source/feature/
この辺とかどうよ。 おお、サンクス。
stableとnightly-snapshotsは探したんだけど、なぜかそこは見てなかった。 バージョン1.11.17の環境で
loginfo 等で
%{s}
などが展開されず空になってしまうのですがキーワード文字列は未サポートなのでしょうか?
CVSROOT/configに指定するUseNewInfoFmtStringsは1.12以降でサポートしているようで、unrecognized言われます。 サーバーにcvsntをインストールして
クライアントにWinCvsをインストールして
ログインしようとしたら、ユーザーがEnableでないとエラーが出ました。
どなたか、分かる方いらっしゃいますか?
>>793
あなたが間抜けだと言うことは判ります。 最近になって /etc/cvs-pserver.conf なんてファイルがあることを知ったのですが、
これらのファイルを設定するのと、/etc/xinet.d の下に起動設定を書くのとでは
どちらがポピュラーなのでしょうか。 そもそもCVSを使うのもやめているが、使っていた当時も$Log$は使えないと言う結論に至っている。 >>799
やっぱコードいじられるのが嫌だから?
そうすると$Id$も同じ理由で嫌って事? - コミットし続けるとログ長すぎ。
- diffとると$Log$がうぜぇ。マージが辛い。
- そもそもログ欲しかったらcvs log使えよ。
という理由かと。
だから1行だけの$Id$は許される。 >>802
なるほど。そう感じる人もいることを肝に銘じておくわ。
チームでも$Log$推奨してたんだが、推奨から外すか・・・ >>802
$Id$でもマージするとき面倒じゃない? ■ このスレッドは過去ログ倉庫に格納されています