nDiki : CVS
Concurrent Version System CVS
過去ソフトウェアの共同開発などで良く使われていたバージョン管理システム。 複数のファイルのリビジョン(バージョン)を管理できる。 ちょっとした1つのファイルのリビジョン管理には RCS が便利。
メモ
タグ
作業ディレクトリ中の src ディレクトリ以下にタグ付け。
cvs tag -c release-1-0-0 src
作業ディレクトリ中の src ディレクトリ以下の間違えてつけてしまったタグを削除。
cvs tag -d release-1-0-0 src
ログメッセージの修正
cvs admin -mREV:MSG files
undo
指定したリビジョンを消す(危険)。
cvs admin -oREV file
スポンサード リンク
Related term
2004年12月31日 (金)
■私的10大ニュース2004 [ comp ]

@ cool programs
- pdumpfs
- Memcached
- 簡単・高速なキャッシュシステム。使える。
- Firefox
- Subversion
- 将来的に CVS から移行する事を考えて試験的に導入。良い。Windows でも TortoiseSVN のおかげで簡単に利用できる(CVS にも TortoiseCVS が出て便利になった)。
- 影舞
- 今年前半のプロジェクトで活躍。
- PAR
- NSIS
- Template Toolkit
- Webアプリケーション開発プロジェクトで採用。www.naney.org の静的コンテンツの生成でも使い始めた。
@ Palm OS 生活復活
PEG-TJ25を購入し、Palm OS 生活復活。 最初はおもちゃのつもりで買ったのだが、プロジェクトマネジメントなどにシフトした仕事のスケジュール管理などで大活躍。
PDA 市場の明るい話はあまり聞かないが、末長く製品が出て続けて欲しい。
- Module::Build でソースパッケージング (2005-08-24)
- DAR で差分/増分バックアップ (2005-04-02)
- NSIS でインストーラを作ってみる。 (2004-08-11)
- クラッシュは突然に - DAR の使用を再検討 (2009-01-06)
- PAR (2004-07-19)
2005年2月17日 (木)
■ 別の人の作業ファイルをCVSにマージ

都合によってCVS リポジトリにアクセスできないところにいるチームメンバから、変更した作業ファイルを送ってもらった。
さて。
どうするか。
@ 変更元リビジョンがわかっているもの
ファイルに $Id$ などが含まれていてどのリビジョンに対して変更したのかが簡単にわかるものは diff をとって patch をあてるか。 自分の作業ディレクトリとは別にもう一つ作業ディレクトリをチェックアウトして、そこに変更されている作業ファイルを上書きコピー。
cvs diff -r リビジョン -au ファイル名 | patch /path/to/my/working/dir/ファイル名
で自分の作業ファイルにマージ。
@ 変更元リビジョンがわかっていないもの
とりあえず HEAD と diff してみて問題なさそうならそのままマージ。
やっぱりリビジョン番号を埋め込んでおいた方が便利やね。
- Cache::Memcached 1.13 の Perl 5.005_03 対応 (2004-06-05)
- cvs2svn (2004-02-24)
- TortoiseCVS 1.8.0-RC4 (2004-08-26)
- パッチ作り (2004-06-05)
- PPM とか (2003-10-01)
2005年8月24日 (水)
■ Module::Build でソースパッケージング

@ ExtUtils::MakeMaker
私が Perl が好きな理由の一つに、標準でExtUtils::MakeMakerという Makefile ジェネレータがついているところである。これを使って Makefile.PL を書くと
perl Makefile.PL make manifest make make test make dist
で <pacakge>-<versionno>.tar.gz というソースパッケージを作ることができ、
tar zxvf <pacakge>-<versionno>.tar.gz cd <pacakge>-<versionno> perl Makefile.PL make make test make install
という手順でインストールする事ができるようになる。 パッケージの作り方が確立されているので、容易に新しいパッケージを開発しはじめられる。
逆に Java でプログラムを書くのが億劫なのは、このあたりの準備が面倒だからである。 Ant を使っても結局ここら辺自分でやらなければならないし。
@ ちょっとしたアーカイブの作成
ちょっとしたパッケージを作りたいと思うことは良くある。 例えばいくつかのデータファイルと、READMEファイルなんかをひとまとめにしてアーカイブにするとか。
本当にちょっとしたであれば、手動でアーカイブすれば良いのだが、
- アーカイブしたいファイル群がバージョン管理下にあって、CVS ディレクトリや .svn ディレクトリがある (除外してアーカイブする必要がある)
- 同じディレクトリにある、作業用のファイルはアーカイブしたくない (除外してアーカイブする必要がある)
- アーカイブする前に、チェック用のリグレッションテスト一式を走らせたい (リグレッションテストをかけられるようにする)
- UNIX でも Windows でもアーカイブ化できるようにしたい。
あたりを考慮しなければならない時は面倒くさくなってくる。
自動化としては
- シェルスクリプト/バッチファイルを書く
- Makefile を書く
- GNU Autotools を使う
あたりがぱっと思い浮かぶ。 しかし、最初の2つは毎回同じようなものを書くのが面倒だし保守もしにくい。 GNU Autotools はちょっとごっつすぎだし、Windows での環境構築も面倒。
@ ExtUtils::MakeMaker の欠点
ということで最初は ExtUtils::MakeMaker を使うという線で考えてみた。 もともと Perl モジュール用で汎用用途にはちょっと邪魔な振舞いもあるが、使えないことはないと思う。 しかし make (GNU Make あるいは nmake など) に依存しているという欠点がある。
@ Module::Build で
ということで ExtUtils::MakeMaker の代替である Module::Build ベースで汎用用途に使えないか検討してみた。こちらは pure Perl で make を必要としない。
Module::Build も Perl モジュールビルドにあわせた振舞いがあるものの、ちょっとカスタマイズすれば使えそうだ。 で、いろいろいじった結果、次のような感じにすると使いやすそうだ。
use Module::Build;
my $class = Module::Build
->subclass(class => 'NonmoduleBuilder',
code => q{
# Don't make blib
sub ACTION_code {};
# Don't make blib
sub ACTION_docs {};
# Don't make META.yml
sub ACTION_distmeta {
# no warning on ACTION_distdir
$_[0]->{metafile} = 'MANIFEST';
};
# Don't add MEATA.yml to MANIFEST
sub ACTION_manifest {
$_[0]->{metafile} = 'MANIFEST',
$_[0]->SUPER::ACTION_manifest(@_);
};
});
# Set your archive name and version.
$class->new(dist_name => 'mypackage',
dist_version => '1.0.2',
)->create_build_script;
カスタマイズした部分は以下(Module::Build 0.26 で動作確認)。
- Perl モジュールビルドに特有の blib ディレクトリを作らないようにする。
- META.yml を生成しないようにし、アーカイブに含まれないようにする。
上記のようなファイルを Build.PL という名前で作っておけば
perl Build.PL ./Build manifest ./Build ./Build test ./Build dist
等として、アーカイブ作成が容易にできるようになる。
しばらくこの方法でいろいろ試してみることにしてみよう。
- SCons は GNU Autotools のかわりになるか (2005-04-20)
- ActivePerl で Ming (2005-02-23)
- nmake で毎回 pl2bat されるのを何とかしたい (2004-11-25)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- 今日のさえずり: 乗り換え案内が紀香案内に聞こえてしまう (2011-06-29)
2006年2月18日 (土)
■ Mozex を使って Firefox 1.5.0.1 の textarea の内容を Emacs で編集する

uim、uim-skk と Firefox のキーバインディングをきちんと設定していないせいか、どうも textarea での日本語編集にストレスを感じる。 Wiki 等で textarea での編集作業も少なくないので、Mozex を使って Emacs で編集できるように設定しておくことにした。
より降旗氏が公開されている Firefox 1.5以降用 mozex 1.07.1 日本語 version (1.5.0.1 インストール対応)を Firefox にインストール。
そういえば今まで emacsclient も使ったことがなかったな。Emacs 立ち上げっぱなしのくせに。まずは起動している Emacs 上で M-x server-start (.emacs で (server-start))しておく。
Mozex の設定で
Directory for temporary files: /tmp Textareas: /usr/bin/emacsclient %t
を設定。自分の環境だと Commands は絶対パスでないとうまく呼べないようだ。
これで textarea 上で右クリックし、[mozex] -> [Edit Textarea] で開いている Emacs 上に Textarea の内容が新しいバッファで開く。 編集して保存して C-x # し、Web ブラウザ側に戻ると反映される。
便利便利。
ところで Emacs server と gnuserv とどっちがいいのかな? 特に設定なしでどちらも使える。 何も設定していない状態だと gnuserv の方は新しい frame が開いて好みじゃないので、とりあえずは Emacs server を使うことにする。
ついでに EDITOR 環境変数も emacsclient に直しておこう。 これで CVS、Subversion のコミット時に新しい Emacs を起動しなくてよくなる。
とっとと設定しておけば良かった。
- skkinput がよく落ちるので uim-skk に乗り換え (2005-09-22)
- Notepad++ で perltidy する (2011-03-01)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイルを検索 (2006-08-08)
- vc-svn.el / psvn.el (2004-07-30)
- X-Deep/32 Xサーバ (2005-03-30)
2006年3月25日 (土)
■ vc-svn.el を使いたいので Emacs 22 に移行することにした

Subversion は Emacs の VC バックエンド vc-svn.el があるので CVS の時と同様気軽に使えていたのだが、かなり前から Debian の subversion パッケージから取り除かれて使えなくなってしまっていた。
vc-svn.el は Emacs 22 に含まれるらしく、Debian だと emacs-snapshot(-common と -el)に含まれている。 やっぱり VC で使えないと不便なので、これを機に Emacs 22 に移行することにした。
後生大事に Emacs 19 / 20 / 21 それぞれ用に emacs-major-version で設定を切り分けている .emacs のコードがあったりするので、その部分は動作確認しつつ Emacs 22 用の設定を作成する。
Emacs 21 とちょっと設定を変える必要がある部分があったけれど、おおむね問題なく動いているようだ。
問題なさそうなので update-alternatives で普段使いに設定しておこう。
- cvs2svn (2004-02-24)
- vc-svn.el / psvn.el (2004-07-30)
- Emacs 22 だと howm に色がつかないので Emacs 21 に戻す (2006-04-01)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
- connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 (2007-01-06)
2006年12月13日 (水)
■ wxPerl PPM パッケージ

PAR リポジトリでいろいろ遊べそうなので、GUI 作成に wxPerl の方も久しびりにまた使おうかなと。
ただ wxPerl の本家が配布しているビルド済み PPM パッケージは、いまだに Wx 0.26 + wxWidgets 2.6.2 だったりして使う気になれない。 かといって、自分でビルドするのも結構手間だし。
で探していたところ Wx::Perl::Packager の開発者が、自身のサイトで PPM パッケージを配布しているのを発見。
最新のパッケージがあるのが嬉しい。
というか12月12日 にリリースされた wxWidgets 2.8.0 と、 CPAN にもまだない CVS 版 Wx (次の 0.66 のためのスナップショット)が、同じ12月12日に公開されているという早さ。
これがあれば、最新の機能が堪能できそうだ。
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- Wx::ActiveX をビルド (2004-08-27)
- wxPerl + ActivePerl 5.6.1 build 638 (2004-07-21)
- 今日のさえずり: 「We はーと blog」シールをさっそく貼っといた (2010-10-15)
- TrueCrypt 6.1a を Debian GNU/Linux sid に (2009-02-02)
2007年1月6日 (土)
■ connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続

以前社外から社内 Web サイトへのアクセスは autossh + FoxyProxy を使って SOCKS 経由で直接できるように設定した (記事)。 また Unison や Subversion もそれぞれ SSH port forwarding 経由で直接アクセスできるようにしてある (Unison の記事、Subversion の記事)。
しかし社外から社内サーバへの SSH 接続(やファイル転送)は、以前として一旦中継ホストに接続(転送)してから再度接続(転送)していて面倒であった。
調べたところ Shun-ichi GOTO氏の SSH プロキシコマンド connect.c を使うと SOCKS サーバ経由で直接接続できるようなので設定してみた。
[クライアント:8090] -- SOCKS -- [ゲートウェイ] -- [社内サーバ]
gw.example.com 192.168.1.x
@ インストール
Debian なので apt-get で。
apt-get install connect-proxy
@ SSH の設定
~/.ssh/config に以下の行を追加。
Host 192.168.1.* ProxyCommand /usr/bin/connect-proxy -S localhost:8090 %h %p
192.168.1.* に接続する際は、connect-proxy を使ってローカルホストの 8090 ポートの SOCKS を通るようにする設定。
@ SSH を SOCKS サーバにする
autossh を使って SSH で SOCKS サーバを立てる
autossh -N -f -D8090 gw.example.com
これで準備 OK。
@ 使ってみる
@ SSH 接続
ssh 192.168.1.x
で接続を確認。
@ Konqueror (KDE)
fish://192.168.1.x/
で直接ブラウズ、読み書き可能なことを確認。
@ Unison
普通に 192.168.1.x と同期できることを確認。
@ CVS
普通に 192.168.1.x 上のリポジトリに対して cvs update できることを確認
@ Subversion
普通に 192.168.1.x 上のリポジトリに対して svn update をかけるとアップデートし終わって最後に
FATAL: output (local) failed, errno=32
というエラーがでる。
@ 便利
Subversion だけちょっと気がかりだれど、その他はうまく行っている感じ。
これでかなり手軽に接続、転送できるようになった。 便利、便利。
@ 追記 (2009年2月23日)
一時的に connect.c を通らないで直接接続する際には 'ssh -o ProxyCommand=none' とする。
例: SVN_SSH='ssh -o ProxyCommand=none' svn update
- FoxyProxy と autossh で社内 Web ページを閲覧 (2006-06-03)
- OpenSSH for Windows (2004-08-05)
- Subversion で SSH port forwarding 経由での svn+ssh (2006-06-29)
- Debian Linux kernel 2.6.23 をビルドする。 (2007-12-23)
- Debian Linux kernel 2.6.26 にアップデート (2009-02-07)
2010年9月13日 (月)
■ 今日のさえずり: FRISK ピンクグレープフルーツか

@ 2010年09月13日
- 09:58 缶コーヒー 100円。
- 12:08 鷄そぼろ弁当とお茶 501円。
- 12:10 セブン-イレブンの弁当の「横からも切ることができます。」テープ、以前より改良されたな。前のはボロボロになって手について酷かった。
- 12:52 2008年にちょっと改変したまま放置していたコードをコミット。CVS 触るの久しぶり。
- 13:00 RT @fwafwa_: 定食屋で「このうどんセットください」って店員に言ったら、「うどんですね!?そばもありますがうどんでよろしいですね!?」って何回も聞かれたから内心(そんなに確認しなくてもいいのに…)って思ったけど、数分後にそばセット出てきたからもっと確認しろよと思った。
- 13:17 「ウィンドウが画面の端に移動されたときに自動的に整列されないようにします」をチェック。これでイラッとが減る。
- 14:13 ミーティング開始3分前に延期のメールを送信してもらっても、出席準備満々でもうメールなんて見てない。 Gmail の poll サイクル的にも受信できてないし。
- 15:29 Xperia ここ最近調子悪い。今もシャットダウン終了できなくて電池外した。
- 18:49 キリがいいので今日は上がり。
- 19:19 夜アトレ。
- 19:22 FRISK ピンクグレープフルーツか。気になる、気になる。
- 19:54 うわ、外蒸すなあ。こっちも雨来るのかな。
- 21:20 熱海の捜査官の公式サイト見てる。用語辞典と南熱海の地図がいいね。
- 22:34 テレビどれにしようかな。 REGZA なら 37V型の 37ZS1 かなあ。 http://amzn.to/cwe4lQ
- 23:04 風呂入っている間に雨。涼しくなるかな。
- 今日のさえずり - 入り口に盛り塩? (2010-02-15)
- 今日のさえずり: リアル脱出失敗! (2011-08-03)
- 今日のさえずり: お年玉付き年賀はがきの当選番号チェックしました。全滅でした! (2011-01-29)
- 今日のさえずり - 鳩三郎が会社にきた (2008-09-25)
- 今日のさえずり - 停電って近隣にいる Twitter-ers あぶりだしに最適 (2010-01-21)
2010年11月19日 (金)
■ Git でローカルリポジトリの連続するコミットをまとめてから push したい時

分散型バージョン管理システムである Git では Subversion や CVS、Visual SourceSafe などと違って気軽にローカルリポジトリにコミットしていって、最終的に形になったところで公開/共用リポジトリに push するといったことができる。
こまめにローカルリポジトリにコミットしながら作業していくことで、いつでも後戻りしてやり直したり変更点を確認したりできる。ただちょっとした変更の連続によるたくさんのコミットを公開/共用リポジトリにそのまま push したくない。そういう場合は意味のある単位にコミットをまとめてから push したい。
Git では git-rebase でこれができる。
@ 最新のコミット(HEAD)と1つ前のコミット(HEAD^ / HEAD~1)をひとつにまとめて HEAD~2 の次のコミットにしたい時
A---B---C---D---E
| | |
| | HEAD
| HEAD^
HEAD~2
最初に git rebase する。
git rebase -i HEAD~2
すると
pick <HEAD~1のハッシュ> <HEAD~1 のログ> pick <HEADのハッシュ> <HEAD のログ>
という行を含む内容でエディタが起動する。HEAD を HEAD~1 にまとめたいので 2番目の pick を squash に書き換えエディタを閉じる。
すぐにまた今度はコミットログ修正のためのエディタが開く。HEAD~1 のコミットログと HEAD のコミットログがあらかじめ含まれているので、それらを編集して2つ分の内容を反映したものに書き換えエディタを閉じる。
これで直近の2つのコミットがまとめられて新しい1つのコミットになる。
A---B---C---F
ローカルでの試行錯誤をとりまとめて整理されたコミットになったのでここで push する。
git push
なお squash を使えばできるというヒントは @tokuhirom 氏に教えていただきました。ありがとうございます。
- 今日のさえずり: 生まれて初めて10円券20枚を行使した (2010-12-20)
- connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 (2007-01-06)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- cvs2svn (2004-02-24)
- Rekisa で TortoiseSVN から日本語ファイルの差分表示 (2006-03-23)
2010年12月20日 (月)
■ 今日のさえずり: 生まれて初めて10円券20枚を行使した

@ 2010年12月20日
- 10:12 DropboxPortable って開発停止なのか。今の 0.7.110 の状態で使い続けるか迷うところ。 #Dropbox
- 11:07 週次グループミーティングのアジェンダに、いつも「その他」があるのが気になる。
- 12:09 生まれて初めて10円券20枚を行使した。 (@ 向日葵 和泉町店・カレー食堂) http://4sq.com/gmh7J4
- 12:16 「またいっぱい貯めてくださいね(ハート)」※注「ささやかな気持ちDESスクラッチ」は350円弁当にはつきません。
- 12:51 RT @tuiteru: これは楽だ。 nDiki: Gmail 無しの Google アカウントで Google Contact Manager が使えるようになった http://t.co/rLec9Rt via @Naney
- 13:22 まだ食後だけど、もう我慢ならなくてお土産にもらった萩の月を食す。
- 13:26 Subversion / CVS の時は何か面倒な気がしてまずブランチしなかったんだけれど、Git だとホイホイだなあ。
- 15:13 なんか「後で感想を聞きにくるコーヒー」をいただいた。
- 15:31 普通かな。香りはあまりしない。味はあまり苦くないマイルド系。 RT @Naney: なんか「後で感想を聞きにくるコーヒー」をいただいた。
- 19:27 charset を間違えたコミットメッセージの修正で git rebase -i しようとしてはまった。コマンド-ログ行の並びが上ほど古いのを逆と勘違い(メッセージが化けてたこともあって)。何度も違う方を修正しようとしてしまった。
- 21:13 モバツイ Who's Who!? http://bit.ly/gwqsEY
- 21:25 モバツイ Who's Who!? ってマイリストに登録する時にメモがつけられるんだ。Twitter に欲しいと思っていたのでいいかも。20文字はちょっと少なめかな。 http://bit.ly/gwqsEY
- 21:28 モバツイ Who's Who!? でもまだちょっと不安定。プロフィールも出たり出なかったりする。 http://bit.ly/gwqsEY
- 22:10 うちの会社のサイト、郵便番号が書いてないな。
- 22:37 LinkedIn ってどんなものかなと思って登録してみた。 http://linkd.in/f9Iri0
- 22:39 LinkedIn にも Like が。
- 22:41 @Keiichi_SHIGA 言語別にプロフィール作れるんですね。でも名姓順になるからちょっとイケてない。
- 23:38 about.me もアカウント作ってみた。 http://bit.ly/ggLun1
- 今日のさえずり: 野菜生活100の100mlパックに隠しメッセージが!! (2010-12-21)
- Evernote 使用開始 (2009-03-03)
- 今日のさえずり: 安否については生きていればだいたい Twitter に投稿してます (2011-03-14)
- 今日のさえずり - 入り口に盛り塩? (2010-02-15)
- 今日のさえずり: ガチャピンが人を食べるという話が通じなかったので (2012-02-23)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 0.036773s / load averages: 1.16, 1.10, 0.98
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。
◇ 2GB 無料のオンラインストレージサービス Dropbox に次のリンク先から登録すると今なら 250MB プラス! → Dropbox