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

スポンサード リンク

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日全て ]

2013年1月1日 (火)

今日のさえずり: 今日も目が開いた! 生きてる! めでたい!

2013年01月01日

  • 08:20 今日も目が開いた! 生きてる! めでたい!
  • 08:46 元旦の富士山見えた!
  • 11:32 新春なのでmixiプレミアム登録した。
  • 11:42 OpenID: https://id.mixi.jp/naney
  • 15:23 初詣行ってきた。腕パンパン。
  • 18:53 そういえば、今年も例年通り1月1日の記念写真撮った。もう10年以上続いてる。
  • 23:45 冬休み中に CVS から Git に移行したい。
  • 23:57 RT @sseze: 大晦日に1年を振り返っていて思ったけど、Twitterだと書いたことをチェックする機会がなくて、言いっ放しになっていることがとても多い。 ポモドーロでも何でもいいから、その日にやったことのログを残したいと思った。http://www.naney.org/... … @Naneyさんから

[ 1月1日全て ]

2013年1月4日 (金)

CVS リポジトリGit リポジトリに cvs2git で移す

しばらく放置していたこの nDiki のコード(DiKicker)に手を入れようと思うのだけれど、CVS で管理し続けるのもなぁと思い、これを機会に Git に移行させることにした。移行は cvs2git で。ローカルで自分だけでバージョン管理していたものだし、ブランチも切ってなくてタグを売ってあるだけなので一番ちょろいケースか。

Debian GNU/Linux sid 上に cvs2svn Debian パッケージインストール。以下の手順でコンバートした。

オプションファイルを作る

Git リポジトリ上できちんとユーザ名とメールアドレスが入るようにしたいため、オプションファイルを使うようにする。

 zcat /usr/share/doc/cvs2svn/examples/cvs2git-example.options.gz > cvs2git.options

で雛型をコピーして以下を書き換え。

  • ctx.username = 'cvs2svn' のところを naney に。
  • author_transforms に 'naney' : ('WATANABE Yoshimasa', 'naney@naney.org'), を追加
  • run_options.set_project で CVS リポジトリのパスを r'/home/naney/path/to/cvsroot', のように指定。

git fast-import 用のファイルを生成

以下のコマンドで。

 cvs2git --options=cvs2git.options

Git リポジトリを作成しインポート

 mkdir <プロジェクト名>
 cd <プロジェクト名>
 git init
 cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import

で QGit や git log などで、どのようにインポートされたかを確認。trunk のラインから、タグ毎に分岐したコミットができてそこに CVSROOT/ 以下が差分として入っているという形になっているのが特徴的。CVSROOT/ は特にいらないので、数が多くないし手でタグ打ち直すかなあという感じ。

git fast-import したままだと作業ツリーが空なので git checkout して master を checkout するなりすれば、後は普通に Git 上でバージョン管理をしていくことができる。

あっさり移行できたので一安心。


今日のさえずり: 年賀状サービスは後日でいいので PDF ファイルも送って欲しい

2013年01月04日


[ 1月4日全て ]

2013年8月9日 (金)

今日のさえずり: 会社の近くのローソンでキュアエースのスタンプを押すというミッションが与えられた

2013年08月09日


[ 8月9日全て ]

2014年2月19日 (水)

いよいよ WiKicker から WikiEngine のコードを抜いて DiKicker のみにする

2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システムDiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には

  • Perl 5.005_03Perl v5.6 系との互換処理を捨てる。
  • 文字列処理をバイナリ文字列ベースから(いわゆる UTF8 フラグ界隈的な)テキスト文字列ベースにする。
  • CGI.pm ベースから PSGI ベースへ移行する。
  • 中間管理用のストレージを Berkeley DB から SQLite にする。

などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。

CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。


今日のさえずり: 風呂入って出てきたら、シェル上では perlbrew で別の Perl が動いているのを思い出したとか

2014年02月19日


[ 2月19日全て ]

2015年5月13日 (水)

レクサー・リサーチ開発同窓会

naney:17034996273

2月の Developers Summit 2015 で zakwa 氏と再会したのをきっかけに、当時一緒に仕事をしていた気が置けないソフトウェア開発者4人で同窓会をすることになった。セッティングしてくれた zakwa 氏ありがとう!

COGS DINING KAGURAZAKA (コグス ダイニング 神楽)

手配してくれたお店は「焼きたてパンとワインのお店」COGS DINING KAGURAZAKA。神楽から路地に入ったところにあるお店で、上品な味の料理で満足だった。店内もうるさくなくて話しやすかったし、たばこを吸っている人もいなかったので快適だった。

ソフトウェア開発

現職のまま続けている1人と、別の場所で働くことになった3人だけれどみなそれぞれソフトウェア開発現場に関わっていて、それぞれの開発スタイルなどについて情報交換したり。

大企業だからしっかりした開発をしているとか、スタートアップだからモダンな開発をしているとかでは必ずしも無いよねという話だった。例えばバージョン管理一つにしてもうまくできていない(やっていない)場合も多いとのこと。当時を振り返ってみると小規模かつ独学の状況ながら、今では普通になってきたプラクティスやツールをその時から実践/活用していたなと自画自賛した。

「書けなくなったホワイトボードマーカーはその場で床に投げ捨て」に共感を持ってもらえていたのが、振り返って当時の自分の一番の成果だな。

退職時に使っていた社内 WikiNaney 謹製のものだったのでその後どうなったのかなとたまに気になっていたのだけれど、ビル管理会社の人に社内サーバの電源を切られたことによりサーバごと死んで闇に葬られたらしい。R.I.P.

その他

同窓会らしく「あのひとは今」的な話をしたり、当時フィルムカメラで撮っていた業務風景のアルバムを持ってきて盛り上がったり。あとはレーシックやドライアイ治療ひぇー的な話題が出たり。あとは展示会の時のレクサー・リサーチポロシャツ制作秘話とか。

そういえば出席はできなかった2013年2月開催の「LEXER設立20周年記念サロン・パーティ」で会社のるぐるロゴの立体置物が配られたと聞いて、あ、欲しかったなーと。


[ 5月13日全て ]

Related term

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS の企画開発を行うグループのマネージャーをしています。CS 向上・コミュニティマネジメント・ユーザーサポート・健全化などにも取り組んでいます。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス

Process Time: 0.148747s / load averages: 0.37, 0.44, 0.51
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker