トップ(最新) | <前

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

@ Palm OS 生活復活

PEG-TJ25を購入し、Palm OS 生活復活。 最初はおもちゃのつもりで買ったのだが、プロジェクトマネジメントなどにシフトした仕事のスケジュール管理などで大活躍。

PDA 市場の明るい話はあまり聞かないが、末長く製品が出て続けて欲しい。

http://www.naney.org/img/2004/X/X2004-03-05-0003.jpg http://www.naney.org/img/2004/X/X2004-03-14-0004.jpg http://www.naney.org/img/2004/X/X2004-04-10-0001.jpg

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


[ 12月31日全て ]

2005年2月17日 (木)

別の人の作業ファイルをCVSにマージ このエントリーを含むはてなブックマーク

都合によってCVS リポジトリにアクセスできないところにいるチームメンバから、変更した作業ファイルを送ってもらった。

さて。

どうするか。

@ 変更元リビジョンがわかっているもの

ファイルに $Id$ などが含まれていてどのリビジョンに対して変更したのかが簡単にわかるものは diff をとって patch をあてるか。 自分の作業ディレクトリとは別にもう一つ作業ディレクトリをチェックアウトして、そこに変更されている作業ファイルを上書きコピー。

 cvs diff -r リビジョン -au ファイル名 | patch /path/to/my/working/dir/ファイル名

で自分の作業ファイルにマージ。

@ 変更元リビジョンがわかっていないもの

とりあえず HEAD と diff してみて問題なさそうならそのままマージ。

やっぱりリビジョン番号を埋め込んでおいた方が便利やね。


[ 2月17日全て ]

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 でもアーカイブ化できるようにしたい。

あたりを考慮しなければならない時は面倒くさくなってくる。

自動化としては

あたりがぱっと思い浮かぶ。 しかし、最初の2つは毎回同じようなものを書くのが面倒だし保守もしにくい。 GNU Autotools はちょっとごっつすぎだし、Windows での環境構築も面倒。

@ ExtUtils::MakeMaker の欠点

ということで最初は ExtUtils::MakeMaker を使うという線で考えてみた。 もともと Perl モジュール用で汎用用途にはちょっと邪魔な振舞いもあるが、使えないことはないと思う。 しかし make (GNU Make あるいは nmake など) に依存しているという欠点がある。

@ Module::Build

ということで ExtUtils::MakeMaker の代替である Module::Build ベースで汎用用途に使えないか検討してみた。こちらは pure Perl で make を必要としない。

Module::BuildPerl モジュールビルドにあわせた振舞いがあるものの、ちょっとカスタマイズすれば使えそうだ。 で、いろいろいじった結果、次のような感じにすると使いやすそうだ。

 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

等として、アーカイブ作成が容易にできるようになる。

しばらくこの方法でいろいろ試してみることにしてみよう。


[ 8月24日全て ]

2006年2月18日 (土)

Mozex を使って Firefox 1.5.0.1 の textarea の内容を Emacs で編集する このエントリーを含むはてなブックマーク

uimuim-skkFirefox のキーバインディングをきちんと設定していないせいか、どうも 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 に直しておこう。 これで CVSSubversion のコミット時に新しい Emacs を起動しなくてよくなる。

とっとと設定しておけば良かった。


[ 2月18日全て ]

2006年3月25日 (土)

vc-svn.el を使いたいので Emacs 22 に移行することにした このエントリーを含むはてなブックマーク

SubversionEmacsVC バックエンド vc-svn.el があるので CVS の時と同様気軽に使えていたのだが、かなり前から Debian の subversion パッケージから取り除かれて使えなくなってしまっていた。

vc-svn.elEmacs 22 に含まれるらしく、Debian だと emacs-snapshot(-common と -el)に含まれている。 やっぱり VC で使えないと不便なので、これを機に Emacs 22 に移行することにした。

後生大事に Emacs 19 / 20 / 21 それぞれ用に emacs-major-version で設定を切り分けている .emacs のコードがあったりするので、その部分は動作確認しつつ Emacs 22 用の設定を作成する。

Emacs 21 とちょっと設定を変える必要がある部分があったけれど、おおむね問題なく動いているようだ。

問題なさそうなので update-alternatives で普段使いに設定しておこう。


[ 3月25日全て ]

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日に公開されているという早さ。

これがあれば、最新の機能が堪能できそうだ。


[ 12月13日全て ]

2007年1月6日 (土)

connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 このエントリーを含むはてなブックマーク

以前社外から社内 Web サイトへのアクセスは autossh + FoxyProxy を使って SOCKS 経由で直接できるように設定した (記事)。 また UnisonSubversion もそれぞれ 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 を通るようにする設定。

@ SSHSOCKS サーバにする

autossh を使って SSHSOCKS サーバを立てる

 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

[ 1月6日全て ]

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 風呂入っている間に雨。涼しくなるかな。

[ 9月13日全て ]

2010年11月19日 (金)

Git でローカルリポジトリの連続するコミットをまとめてから push したい時 このエントリーを含むはてなブックマーク

分散型バージョン管理システムである Git では SubversionCVSVisual 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 氏に教えていただきました。ありがとうございます。


[ 11月19日全て ]

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

[ 12月20日全て ]

この日記のはてなブックマーク数 Add to Google RSS

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)