編集(管理者用) | 編集 | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴
== o ==
ねこまたや web出張所
INDEX

トップページ
お知らせ
twitter
お道具箱
技術資料と雑談
ライブラリ
雑貨や(ダウンロード)
最近の更新
ねこまたやについて

twitter

ねこまたやのついった

企画モノ

psAxe情報ページ
自主制作アニメ
ぽこあぽこ られんたんど


あやかしあやし
エフェクトネタ帳



りまぴん
AE エクスプレッション
レンダー乙女とか
簡易版XPSリンカ
おまけギャラリ

BBS

ねこまたやBBS
開発室BBS

Language



開発室みたいなものでしたが
spamアクセスがはげしいのでページは凍結中です。
書き換えは管理人のみが可能です。
Nekomataya/2016

CVS - 昔から、''csv''とよく書き間違える私なのだった。


目次

昔から、csvとよく書き間違える私なのだった。

発端

このところ、プログラムを作る時間が増えたので管理システムが欲しくなってきた。 その昔RCSに手を付けようと思ったが何となくプログラム自体書かなくなったので、そのまま手つかずに放置していたジャンルなのです。

いいよね、リビジョン管理できるソフト

まずは使い方を覚えよう!おー!

あー、イロイロ

まず、サーバーだ

ファイルサーバは玄箱(debian)なので dselectでインストール。設定もしてくれた。楽ちん。 ついでにOpenSSHも入れて設定して、Telnetは、止めておく。よしよし。 ホストのキーと公開カギは、あ、勝手にできるのね。ありがとう。

昔一時つかっていたSSH1のキーは…バックアップの中ならあるけど掘るのが面倒なので新規作成。SSH2のキーも作る。HOMEはWindowsからもマウントできるのでそのまま使うことにする。

クライアント

WindowsXPなのでどれを入れるかほんの少し悩んだ…が 楽そうなので WinCVS(ごった煮) http://www.gembook.jp/tsum/page.pys

インストーラーのいう通り素直にインストール

SSHは、単体版かCYGNUSか…このホストはあまりUNIXな環境で使わないので単体版をインストールすることにする。

http://sshwindows.sourceforge.net/

メモ:これは、Cygwin.dllをつかっている

インストーラーつき。楽ちん

 うむ、"C:\Program Files\OpenSSH\"にrootもどきができた。設定ファイルはetcの下

設定する。キーを作る。サーバに乗り入れてみる。よっしゃ

ではまた明日

今日です

何となく使ってみる

うむ、「CVSは、リポジトリを管理するソフト」だね。 ファイルのリビジョンは、ファイルごとにつくと…

まとめてバージョンを管理する場合は…日付で呼ぶかまたはその時点にタグを打つのだね。…そんな感じだ。

枝を張ってサブリビジョンを管理できるね。ベンリだ。

リビジョン自体はRCSを呼ぶのか?…内蔵?…diffも内蔵?…よく分からん。 diffは、外部プログラムも呼べる?…ひとまず放っておこう。

えいと、まずやることは

 cvs -d (リポジトリのパス) init
よっしゃ、できた。ここにデータが溜まってゆくのだな。

 cvs -d (リポジトリ) import (管理対象)
入れた。ソースのデータはもういらないのか?…そうだね。バックアップして消す

 cvs [面倒なのでリポジトリ指定は以後 環境変数指定で省略] checkout (管理対象)

なんか書く。変える。換える。足す。捨てる。イロイロする

で、何ができますか? えーっと

一人でつかっている分にはまずこのくらいか?…で

 cvs commit
コミットの別名はチェックイン(ci)または(com)よし、覚えた。
掃除をしたら次は、リモートの設定をしよう。 コミットさーン!ハーイ!

リモートの設定をしてみる

 /etc/ssh/sshd_config
を編集してsshdをリスタート

ここまでの注意。SSH通信先の ~/.ssh/ に公開カギを置いておく事。(当たり前だけど) 現在の環境だと、通信元HOME と 通信先HOME が物理的に同じなのでネット経由で結局同じキーを参照している。やもすると別のホストを使うときに「うっかり転送を忘れ」て悩みそう。気がつかないで四苦八苦しそうな予感がイッパイ…よくあるので。

通信先のhomeに公開カギがないとセッションが成立しない!

 /etc/services
に…済んでた。インストールで設定されたらしい。

 /etc/inetd.conf
を編集してエントリを追加
 cvspserver      stream tcp      nowait  root    /usr/sbin/tcpd /usr/bin/cvs -f --allow-root=(リポジトリのパス) pserver

 kill -HUP (inetdのpid)

 cvs -d :ext:わし@localhost:(リポジトリのパス) co (管理対象)
おっけい。拾えたようである。

 cvs -d :pserver:わし@localhost:(リポジトリのパス) co (管理対象)

あら、ステータス1だ。エラー! なになに一回リモートのパスワードでログインしてみろ? たしか、設定ファイルでシステムユーザの認証を禁じたはずだから… ええーと…パスワードファイル作るんじゃ無かったか?作ってなかったな。そういえば

 それじゃだめじゃん!

passwdファイル作ることにする。普通のやつかい ? httppasswdで良いのか ? 良さそう。

 httpasswd (リポジトリのパス)/CVSROOT/passwd (わし)
ついでにアノニマスとか作っておく。
 httpasswd (リポジトリのパス)/CVSROOT/passwd anonimous

 cvs -d :pserver:わし@localhost:(リポジトリのパス) login
パスワード要求された。よしよし ためしにわざと違うパスワードを打ってみる。
 *******
 cvs login: authorization failed:
うむ、良さそう。ではもう一度
 cvs -d :pserver:わし@localhost:(リポジトリのパス) login
 ******
 (リポジトリのパス): no such repository

そんなリポジトリは無い! あれ? :ext: と同じリポジトリのはずだがつづりを間違えた ? 間違ってない。

いや待てよ、

何か見落とした?

ログ読んだ

うまくいった:ext:のときは、rootとして実行されてるみたい? そういえばinetdでは、root権限で起動した。たしか個人設定を無視するオプション -f をつけたような気もするよ。

 /etc/inetd.conf
をもいちど編集
 cvspserver      stream tcp      nowait  root    /usr/sbin/tcpd /usr/bin/env -i /usr/bin/cvs -f --allow-root=(リポジトリのパス) pserver
 kill -HUP (inetdのpid)

 cvs -d :pserver:わし@localhost:(リポジトリのパス) login
 ******
ん、何事もなく抜けた?

 cvs -d :pserver:わし@localhost:(リポジトリのパス) checkout (管理対象)
おっけい。拾えたようである。

よしひとまずセッテイ終わり?かな

ところで、これってどういう手順で通信しとるのだ?セッション張りっぱなし…ターミナルじゃあるまいしそんなわけなさそう。張りっぱなしならデーモンモードで動きそうなものだし。

虎の巻を読む。 何々?ログインするとローカルのhomeにパスワードを一時的に置いて、このファイルに書いてあるリポジトリに対してはセッションごとに毎回そのパスワードで接続をする…と

なるほど、ログアウトするとパスワードファイルからエントリが消えるのね。

ああ、あるです隠しファイル。む、windowsとサーバが同じhomeだからファイルとか共用になるんだね。大丈夫かな? …ま、しばらくつかってみましょう。だめなら何か別に分ければよし。問題なければこのままGOぢゃ!

メモ:

本日のお勉強おしまい(感想…虎の巻きはベンリ)

お外からつないでみる

ちびっとルータに窓を明けて仕事場からつないでみる。

と、つながらない?あれ?

ルータにNATだけ付けて、肝心のアクセスコントロールをしてませんでした

 hosts.deny
 ALL : ALL
通信できる理由なし。とほほ

許可した。 あれ?また駄目だ??

 hosts.allow
 cvspserver :ALL
…はい、この設定は、プロトコル名ではなくてプロセス名で指定しないと駄目でした。忘れてたよ。 わし、なんでプロトコル名だとか思っちゃったんでしょう?とほほ

書き換えた

 hosts.allow
 (cvs起動スクリプト) : ALL
どだ? つながったようでしゅ

ためしてみる

 cvs login
 cvs co testCvs
 (編集する)
 cvs update

うっしゃ、大丈夫

わーいわーい

ブランチタグだ

ブランチタグを作った。

虎の巻を読みつつブランチの直前にタグを打って

 cvs tag root_of_REL01
さらにブランチタグを作って枝を張ってみた
 cvs tag -b REL01

うんこれで良いはずだ。

チェックアウトしてみる

 cvs checkuot (モジュール)

うむ、拾いだした。

では、作業コピーをいったん解除して取りなおしてみる

 cvs release -d (モジュール) 
 cvs checkuot (モジュール)

よしよし、あれ? あああ!一緒のディレクトリに置いてあったcvs管理外のファイルとディレクトリが全滅しているよー。がちョーン!

別のバックアップから掘る とほほほほ

リリース時の -d オプションは モジュールのディレクトリごと 全消しなので 注意だ!