[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(howto/MenuBar)
* howto/cvs [#b5bf5c7e]
#contents
** 一行メモ [#f966cdfd]
#comment
** すごく単純なCVSの使い方で、頻繁に使う操作 [#m517f0af]
チェックアウトした後、trunkのみを使ってゆく場合。
次のように、ファイル更新を繰り返す。
$ cvs update -d
# -d はリポジトリに存在し、作業用にないディレクトリを...
# 代わりに -Pにすると、空ディレクトリは削除される
# 表示されるメッセージ
# C コンフリクトしていた
# P リポジトリのファイルに作業用のファイルを合わせて...
# U リポジトリから作業用ディレクトリにファイルをコピ...
# M 作業用ファイルは、リポジトリのファイルと比べて修...
$ cvs diff -u ファイル名
# リポジトリと作業用のファイルのdiffをとる
$ emacs
# コンフリクトしたファイルには、<<<<などの印により衝突...
# 埋め込まれるので、これをエディタで編集(merge)する。
$ cvs ci -m "message"
** 利用環境 [#v702dbfe]
*** ~/.cvsignore (CVSのチェック対象から外す) [#gba53495]
*.x
*.exe
*.o
*** ~/.cvswrappers (CVSでバイナリ扱いとする) [#ma138b49]
*.xyz -k 'b'
*.jpg -k 'b'
*.gif -k 'b'
*.png -k 'b'
*.tif -k 'b'
*.doc -k 'b'
*.xls -k 'b'
*.ppt -k 'b'
*.tar -k 'b'
*.tgz -k 'b'
*.gz -k 'b'
*.Z -k 'b'
*** ~/.cvsrc (自動で付けるオプション) [#e5cf60e4]
diff -u
update -d -P
cvs -q
*** ~/.cvsrepos (リポジトリーの例) [#pb21fd09]
これはcvsコマンドは読まない。
独自に作ったファイルであり、source ~/.cvsreposでリポジト...
.cvsrepos_hoge1, .cvsrepos_hoge2, .cvsrepos_hoge3 のよう...
# For use this repository (rep directory which contains
# various suites),
# $ source ~/.cvsrepos
export CVSROOT=~/rep
#export CVSROOT=:ext:okazaki@hoge.ac.jp:/home/okazaki/rep
export CVS_RSH=ssh
export CVSWRAPPERS=~/.cvswrappers
** リポジトリ(作成、追加、移動、削除) [#x1405982]
*** リポジトリを作る [#dac5f415]
mkdir ~/rep
cvs -d ~/rep init # リポジトリを作って初期化。
# このディレクトリ(rep)に、...
# を入れることができる。従っ...
# ひとつリポジトリがあれば十...
chmod -R go-rwx ~/rep # 必要ならセキュリティのためパー...
*** リポジトリにプロジェクトを追加する [#z9affaec]
PAIIIディレクトリの内容を、PAIIIというプロジェクト名で追...
source ~/.cvsrepos # 又は e...
cd ~/samba_shared/ExtraDoc_ringo/PAIII # 追加したいディ...
cvs import -m "Prog A III" PAIII okazaki initial # 追加
# カレントディレクトリの内容が、~/repに、PAI...
# ディレクトリ名で保存される
rm -rf ~/samba_shared/ExtraDoc_ringo/PAIII # 不要である
importオプションの説明
cvs import -m "start project" proj vender ...
ログメッセージ プロジェ ベンダ ...
クト名 タグ ...
projが、repディレクトリ内のディレクトリ名や、チェッ...
プロジェクト名になる。
*** リポジトリの移動 [#gbfcc21d]
サーバにあるリポジトリのディレクトリ(例えば~/rep)を丸ご...
ただし、クライアントの方はcheckoutし直す。同一サーバ内で...
でも、パスが変わるのでクライアントの方のcheckoutし直しは...
*** タグを設定する [#t480c189]
cvs -q tag Release-1999_05_01
*** メジャーバージョンを上げる [#a9c876bc]
(予め、作業用コピーは全てコミットしていること)
cvs commit -m "upping major version number" -r 2.0
*** プロジェクトヒストリを見る [#y7a6a59f]
cvs annotate [file] # ファイルの各行について、誰...
cvs history -e -a [file] # ファイルに対して行った操作...
*** パッケージ化をする [#m902a24b]
プロジェクトmyprojについて、myproj-1.0ディレクトリにchec...
cvs -q export -r Release_1_0 -d myproj-1.0 myproj # -...
or
cvs -q export -D tomorrow -d myproj-1.0 myproj # -...
後は、tar cvf myproj-1.0.tar myproj-1.0 などをする。
*** 作業用コピーを削除する [#b4506e20]
cvs release -d myproj # myprojはチェックアウトしたデ...
(rm -r myproj と同様である)
*** リポジトリを削除する [#r3aac730]
1) 作業用ディレクトリをすべて削除する。
2) リポジトリ内の該当するプロジェクトのディレクトリを丸...
3) 次の2点はやらなくても問題は起こらない。
$CVSROOT/CVSROOT/val-tags から該当するプロジェクト...
$CVSROOT/CVSROOT/history から該当するプロジェクト...
** 基本的な操作 [#h36e31e8]
*** 作業コピーをチェックアウトする [#c22673a5]
$ cvs checkout [-d 指定するディレクトリに保存] [-r タグ]...
projディレクトリ(プロジェクト名)が作られて、その中にリポ...
*** コミットする [#r33b65c2]
$ cvs commit -m "log message" [files]
*** ファイルを追加する [#d80ae509]
$ cvs add newfile.c
$ cvs commit -m "add newfile.c" [newfile.c]
[newfile.c]は省略化。この場合は全ファイルを対象にしてcom...
ファイルがバイナリであるときは、cvs add -kb files のよう...
いったんcommitし、その後、そのファイルを削除、commitする...
追加するファイルと同じファイル名のファイルがリポジトリに...
updateの形では追加されない。予め作業用の方のファイルを消...
*** ディレクトリを追加する ((Reference: Karl Fogel, Moshe...
$ mkdir c-subdir
$ cvs add c-subdir
$ cvs ci -m "log"
$ cvs update -P #空のディレクトリがある場合、作業...
ディレクトリ内のファイル追加は、そのディレクトリに移って...
*** ファイルを削除する [#n88cb735]
$ rm newfile.c
$ cvs remove newfile.c
$ cvs ci -m "removed newfile.c" newfile.c
*** ファイル名を変更する [#wfb75bf8]
$ mv oldname newname
$ cvs remove oldname
$ cvs add newname
$ cvs ci -m "renamed oldname to newname" oldname newname
*** ディレクトリを削除する [#oc2f3bdd]
まずディレクトリ内のファイルをすべて削除する
$ pwd
dir/
$ cvs update -P #空のディレクトリがある場合、作業用コピ...
*** ディレクトリ名を変更する [#d351e37e]
$ mkdir newdir
$ cvs add newdir
$ mv olddir/* newdir
$ cd olddir
$ cvs rm foo.c bar.txt #olddirにあったファイル
$ cd ../newdir
$ cvs add foo.c bar.txt
$ cd ..
$ cvs ci -m "moved foo.c and bar.txt from olddir to newd...
$ cvs update -P
*** バイナリファイルを追加する [#z1437cac]
$ cvs add -kb files #キーワード展開を中止、および改行...
$ cvs add -kk files #キーワード展開を中止
cvs update -kk や cvs update -kb をしたソースをコミット...
*** コマンドの省略形 [#zb927040]
checkout = co
commit = ci
update = up
* その他 [#e8ff6491]
● CVSログからGNUスタイルのChangeLogを生成する ( cvs2cl.p...
$ cvs2cl.pl -r -b -t [--stdout] [files]
-h ヘルプ表示
-r リビジョン番号を含める
-b ブランチ名を含める
-t タグ名を含める
--stdout ChangeLogファイルではなく、標準出力に出す。
● INFOマニュアル $ info cvs
● キーワード展開
$Revision$
$Log$
● (クライアントとしての)リポジトリの設定、簡単な使用例
cvsのグローバルオプション、-d :pserver:jrandom@cvs.fooba...
又は
環境変数、CVSROOT=:pserver:jrandom@cvs.foobar.com:/usr/l...
ローカルなリポジトリの場合は、CVSROOT=/usr/local/cvs
リモートな場所のリポジトリの場所へのアクセス方式として、
pserver, ext(rsh,ssh; シェルは環境変数 CVS_RSH=ssh で指...
kserver(Kerberos), gserver(GSSAPI)方式がある。
リモートなcvsサーバへのログイン、ログアウト cvs login ; ...
● CVSROOT管理用ディレクトリのチェックアウト
$ cvs co CVSROOT
● 特定の時刻のスナップショットを入手する
$ cvs -q update -D "1999-04-19 23:59:59 GMT"
● Sticky特性を削除する(作業用コピーは最新のリビジョンに...
$ cvs -q update -A
● ブランチを作る
$ cvs -q tag -b Release-1999_05_01-branch
● 作業コピーの内容を調べる
$ cd myproj
$ cvs -q [-n] update [files] # -nを付けた場合、作業用コ...
$ cvs -Q diff [-u] [files]
△● リビジョン番号を調べる
$ cvs [-Q] status [files]
△● ログを調べる
$ cvs log [files]
△● 内容の変更を調べる
$ cvs diff -u -r 1.3 -r 1.4 [files]
リビジョン番号
リビジョン番号
$ cvs diff
全ファイルを対象に、リポジトリとの差分をとる
● hello.cの古いリビジョン番号1.3のファイルを取り出し、新...
(古いファイルを復活させる)
$ cvs -Q update -p -r 1.3 hello.c > hello.c
● hello.cにリビジョン番号1.4から1.3への変更パッチをhello...
$ cvs update -j 1.4 -j 1.3 hello.c
● ブランチからトランクへ変更をマージする
$ cvs -q update -A
$ cvs -q diff -u -r Release-1999_05_01-branch #ブランチ...
$ cvs -q update -j Release-1999_05_01-branch #ブランチ...
#現在の作...
( cvs -q update -j Release-1999_05_01-branch-fix-number-...
( #ブランチのタグ Rele...
( #ブランチの最新までの...
$ cvs -q update
$ cvs -q ci -m "merged from branch Release-1999_05_01-br...
● CVSのwatch機能 pp.142-153
● コミット後にログメッセージを変更する
$ cvs admin -m 1.7:"Truncate four-digit years to two in ...
● CVSで、サーバや、anonymousの運用のための設定 (未チェッ...
(1) /etc/groupに、cvsを追加
cvs:*:105:kfogel,sussman,jimb,noel,lefty,fitz,craig,anon...
(2) リポジトリの初期化、オーナーグループ、アクセス権を設...
local$ cvs -d /usr/local/newrepos init
local$ cd /usr/local/newrepos
local$ chgrp -R cvs . #ディレクトリにsetgidを実行して...
#親のものが引き継がれる(BSD,Linux)
local$ chmod ug+rwx . CVSROOT
(3) pserver方式を用いる時
/etc/servicesに cvspserver 2401/tcp を追加し、
/etc/initd.confに、
cvspserver stream tcp nowait root /usr/local/bin/cvs cvs...
or
cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/lo...
(tcpwrappersを使うシステムの場合)
を追加し、
kill -HUP "inetdのPID"
する。
(4) CVSROOT/passwd を作る
passwdファイルの形式は、「CVSユーザ名:暗号化パスワード:...
(パスワードはクリアテキストで送られるので、/etc/passwdと...
TIPS: cryptout.pl; 暗号化するユーティリティ(p111)
=================================================?
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5...
my $salt = sprintf ("%c%c", eval $randletter, eval $rand...
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}";
print "\n";
=================================================
(1') 複数のプロジェクトを扱う場合(p112)、
/etc/passwd にプロジェクト別のcvsユーザを追加
cvs-foo:*:600:600:Public CVS Account for Project foo:/us...
cvs-bar:*:601:601:Public CVS Account for Project bar:/us...
/etc/group にプロジェクト別のcvsグループを追加
cvs-foo:*:600:cvs-foo
cvs-bar:*:601:cvs-bar
(4') CVSROOT/passwd にユーザとプロジェクトの対応を作成
kcunderh:...:cvs-foo
jmankoff:...:cvs-foo
dstone:...:cvs-bar
twp:...:cvs-bar
(他) 読みとり専用ユーザ等を設定
CVSROOT/readers ファイルにユーザ名を含めると、全てのプロ...
CVSROOT/writers ファイルにユーザ名を含めると、含まれてい...
* ソースの更新手法 (( Reference: Karl Fogel, Moshe Bar共...
** 「トランクに何度もマージする」手順 [#m69fdbfd]
<<branch:Exotic_Greetings-branch>>
+-----------------+(Exotic_Greetings-1)----...
| . \ . ...
| . \ . ...
| . \. ...
<<trunk>> | . V ...
---+(Root-of-Exotic_Greetings)----+(merged-Exotic_Greeti...
. . . ...
. . . ...
. . . ...
*A**B* *C* ...
<<paさん、yaさん、とその他の人が仕事をしている状況>>
<<トランク>> <<ブランチ>>
pa$ cvs tag Root-of-Exotic_Greetings #ブランチのルート(...
pa$ cvs tag -b Exotic_Greetings-branch #ブランチを作る
pa$ cvs update -r Exotic_Greetings-...
pa$ emacs #何か編集
pa$ cvs ci -m "print exotic greetin...
. . . *A* . . .
ya$ emacs #何か編集
ya$ cvs ci -m "some very stable changes indeed"
. . . *B* . . . ★マージする★
ya$ cvs diff -u -r Exotic_Greetings-branch #ブランチの...
#ブランチの...
ya$ cvs update -j Exotic_Greetings-branch #ブランチのブ...
(ya$ cvs update #他の人のトランクへの更新を加える、念の...
(ya$ emacs #**競合**を編集)
ya$ cvs ci -m "merged from Exotic_Greetings-branch (con...
ya$ cvs tag merged-Exotic_Greetings
. . . *C* . . .
pa$ cvs tag Exotic_Greetings-1
pa$ emacs #何か編集
pa$ cvs ci -m "print a capitalized ...
pa$ cvs -q tag Exotic_Greetings-2
. . . *D* . . .
ya$ emacs #何か編集
ya$ cvs ci -m "Mention new Exotic Greeting features"
. . . *E* . . . ★マージする★(これを何度もする)
ya$ cvs -q diff -u -r Exotic_Greetings-1 -r Exotic_Gree...
ya$ cvs -q update -j Exotic_Greetings-1 -j Exotic_Greet...
...
(ya$ cvs -q update)
(ya$ emacs #**競合**を編集)
ya$ cvs -q ci -m "merged again from Exotic_Greetings-1"
ya$ cvs -q tag merged-Exotic_Greetings-1
||何度もすることのまとめ
|| 作業コピーはトランクである。
|| cvs -q diff -u -r "前回マージしたブランチのタグ" -r ...
|| cvs -q update -j "前回マージしたブランチのタグ" -j ...
|| cvs -q update
|| 競合を編集
|| cvs -q ci -m "ログメッセージ"
|| cvs -q tag "トランクに付けるマージ後のラベル"
** 「トランクの変更をブランチにマージする」手順 [#qacb499c]
<<branch:Exotic_Greetings-branch>>
+-----------------------------------------...
| . ...
| . ...
| . /
<<trunk>> | . /
-------------+------+(merged-Exotic_Greetings-1)--------...
.
.
.
*A*
<<paさん、yaさん、とその他の人が仕事をしている状況>>
<<トランク>> <<ブランチ>>
ya$ emacs #何か編集
ya$ cvs ci -m "clarify algorithm"
. . . *A* . . .
pa$ cvs -q update -j merged-Exotic_G...
...
...
(pa$ cvs update #他の人のブランチへの...
pa$ cvs -q ci -m "merged trunk, from...
pa$ cvs -q tag merged-merged-Exotic_...
||全般的な注釈
|| Stickyタグが設定されているスナップショットでは、コミ...
|| トランク(cvs update -A)、または、ブランチ(cvs update...
** 「トビウオ方式のマージ」手順 (簡単な方法) [#w1cfc20e]
<<branch-1>> <<branch-2>>
+-----------| +----------...→|
| \ |. \
| \ |. \
| \ |. \
<<trunk>> | V |. V
----------+----------------+----------------------------...
.
.
.
*A*
<<paさん、yaさん、とその他の人が仕事をしている状況>>
<<トランク>> <<ブランチ>>
ya$ cvs tag -b branch-1 #ブランチを作る
pa$ cvs checkout -r branch-1 #ブラ...
(pa$ emacs #何かを編集)
pa$ cvs ci -m "committing all uncom...
(ya$ emacs #何かを編集)
ya$ cvs update -j branch-1
(ya$ emacs #**競合**を編集)
ya$ cvs ci -m "merged from branch-1"
. . . *A* . . .
ya$ cvs tab -b branch-2
pa$ cvs checkout -r branch-1 #ブラ...
||注釈
|| yaさんがマージしている間は、完了するまでブランチの人...
** 「サードパーティソースを追跡する」手法 (本家の開発中の...
#VER1.0をリポジトリtheirprojにインポートする。
$ cvs import -m "import theirproj 1.0" theirproj them th...
#theirprojのソースを独自に修正
$ cvs co theirproj
$ cd theirproj
$ emacs #何かを編集
$ cvs update
$ cvs ci -m "changed digestion algorithm; added comment ...
#VER2.0がリリースされたので、リポジトリtheirprojにインポ...
$ cvs -import -m "import theirproj 2.0" theirproj them t...
.... #...
cvs checkout -jthem:yesterday -jthem theirproj #...
$ cvs co -j theirproj_1_0 -j theirproj_2_0 #theirproj_1_...
#更新を、thei...
#チェックアウ...
$ cvs update
$ cvs diff
$ emacs #**競合**を編集
$ cvs update
$ cvs diff
$ cvs ci -m "resolved conflicts with import of 2.0"
終了行:
#menu(howto/MenuBar)
* howto/cvs [#b5bf5c7e]
#contents
** 一行メモ [#f966cdfd]
#comment
** すごく単純なCVSの使い方で、頻繁に使う操作 [#m517f0af]
チェックアウトした後、trunkのみを使ってゆく場合。
次のように、ファイル更新を繰り返す。
$ cvs update -d
# -d はリポジトリに存在し、作業用にないディレクトリを...
# 代わりに -Pにすると、空ディレクトリは削除される
# 表示されるメッセージ
# C コンフリクトしていた
# P リポジトリのファイルに作業用のファイルを合わせて...
# U リポジトリから作業用ディレクトリにファイルをコピ...
# M 作業用ファイルは、リポジトリのファイルと比べて修...
$ cvs diff -u ファイル名
# リポジトリと作業用のファイルのdiffをとる
$ emacs
# コンフリクトしたファイルには、<<<<などの印により衝突...
# 埋め込まれるので、これをエディタで編集(merge)する。
$ cvs ci -m "message"
** 利用環境 [#v702dbfe]
*** ~/.cvsignore (CVSのチェック対象から外す) [#gba53495]
*.x
*.exe
*.o
*** ~/.cvswrappers (CVSでバイナリ扱いとする) [#ma138b49]
*.xyz -k 'b'
*.jpg -k 'b'
*.gif -k 'b'
*.png -k 'b'
*.tif -k 'b'
*.doc -k 'b'
*.xls -k 'b'
*.ppt -k 'b'
*.tar -k 'b'
*.tgz -k 'b'
*.gz -k 'b'
*.Z -k 'b'
*** ~/.cvsrc (自動で付けるオプション) [#e5cf60e4]
diff -u
update -d -P
cvs -q
*** ~/.cvsrepos (リポジトリーの例) [#pb21fd09]
これはcvsコマンドは読まない。
独自に作ったファイルであり、source ~/.cvsreposでリポジト...
.cvsrepos_hoge1, .cvsrepos_hoge2, .cvsrepos_hoge3 のよう...
# For use this repository (rep directory which contains
# various suites),
# $ source ~/.cvsrepos
export CVSROOT=~/rep
#export CVSROOT=:ext:okazaki@hoge.ac.jp:/home/okazaki/rep
export CVS_RSH=ssh
export CVSWRAPPERS=~/.cvswrappers
** リポジトリ(作成、追加、移動、削除) [#x1405982]
*** リポジトリを作る [#dac5f415]
mkdir ~/rep
cvs -d ~/rep init # リポジトリを作って初期化。
# このディレクトリ(rep)に、...
# を入れることができる。従っ...
# ひとつリポジトリがあれば十...
chmod -R go-rwx ~/rep # 必要ならセキュリティのためパー...
*** リポジトリにプロジェクトを追加する [#z9affaec]
PAIIIディレクトリの内容を、PAIIIというプロジェクト名で追...
source ~/.cvsrepos # 又は e...
cd ~/samba_shared/ExtraDoc_ringo/PAIII # 追加したいディ...
cvs import -m "Prog A III" PAIII okazaki initial # 追加
# カレントディレクトリの内容が、~/repに、PAI...
# ディレクトリ名で保存される
rm -rf ~/samba_shared/ExtraDoc_ringo/PAIII # 不要である
importオプションの説明
cvs import -m "start project" proj vender ...
ログメッセージ プロジェ ベンダ ...
クト名 タグ ...
projが、repディレクトリ内のディレクトリ名や、チェッ...
プロジェクト名になる。
*** リポジトリの移動 [#gbfcc21d]
サーバにあるリポジトリのディレクトリ(例えば~/rep)を丸ご...
ただし、クライアントの方はcheckoutし直す。同一サーバ内で...
でも、パスが変わるのでクライアントの方のcheckoutし直しは...
*** タグを設定する [#t480c189]
cvs -q tag Release-1999_05_01
*** メジャーバージョンを上げる [#a9c876bc]
(予め、作業用コピーは全てコミットしていること)
cvs commit -m "upping major version number" -r 2.0
*** プロジェクトヒストリを見る [#y7a6a59f]
cvs annotate [file] # ファイルの各行について、誰...
cvs history -e -a [file] # ファイルに対して行った操作...
*** パッケージ化をする [#m902a24b]
プロジェクトmyprojについて、myproj-1.0ディレクトリにchec...
cvs -q export -r Release_1_0 -d myproj-1.0 myproj # -...
or
cvs -q export -D tomorrow -d myproj-1.0 myproj # -...
後は、tar cvf myproj-1.0.tar myproj-1.0 などをする。
*** 作業用コピーを削除する [#b4506e20]
cvs release -d myproj # myprojはチェックアウトしたデ...
(rm -r myproj と同様である)
*** リポジトリを削除する [#r3aac730]
1) 作業用ディレクトリをすべて削除する。
2) リポジトリ内の該当するプロジェクトのディレクトリを丸...
3) 次の2点はやらなくても問題は起こらない。
$CVSROOT/CVSROOT/val-tags から該当するプロジェクト...
$CVSROOT/CVSROOT/history から該当するプロジェクト...
** 基本的な操作 [#h36e31e8]
*** 作業コピーをチェックアウトする [#c22673a5]
$ cvs checkout [-d 指定するディレクトリに保存] [-r タグ]...
projディレクトリ(プロジェクト名)が作られて、その中にリポ...
*** コミットする [#r33b65c2]
$ cvs commit -m "log message" [files]
*** ファイルを追加する [#d80ae509]
$ cvs add newfile.c
$ cvs commit -m "add newfile.c" [newfile.c]
[newfile.c]は省略化。この場合は全ファイルを対象にしてcom...
ファイルがバイナリであるときは、cvs add -kb files のよう...
いったんcommitし、その後、そのファイルを削除、commitする...
追加するファイルと同じファイル名のファイルがリポジトリに...
updateの形では追加されない。予め作業用の方のファイルを消...
*** ディレクトリを追加する ((Reference: Karl Fogel, Moshe...
$ mkdir c-subdir
$ cvs add c-subdir
$ cvs ci -m "log"
$ cvs update -P #空のディレクトリがある場合、作業...
ディレクトリ内のファイル追加は、そのディレクトリに移って...
*** ファイルを削除する [#n88cb735]
$ rm newfile.c
$ cvs remove newfile.c
$ cvs ci -m "removed newfile.c" newfile.c
*** ファイル名を変更する [#wfb75bf8]
$ mv oldname newname
$ cvs remove oldname
$ cvs add newname
$ cvs ci -m "renamed oldname to newname" oldname newname
*** ディレクトリを削除する [#oc2f3bdd]
まずディレクトリ内のファイルをすべて削除する
$ pwd
dir/
$ cvs update -P #空のディレクトリがある場合、作業用コピ...
*** ディレクトリ名を変更する [#d351e37e]
$ mkdir newdir
$ cvs add newdir
$ mv olddir/* newdir
$ cd olddir
$ cvs rm foo.c bar.txt #olddirにあったファイル
$ cd ../newdir
$ cvs add foo.c bar.txt
$ cd ..
$ cvs ci -m "moved foo.c and bar.txt from olddir to newd...
$ cvs update -P
*** バイナリファイルを追加する [#z1437cac]
$ cvs add -kb files #キーワード展開を中止、および改行...
$ cvs add -kk files #キーワード展開を中止
cvs update -kk や cvs update -kb をしたソースをコミット...
*** コマンドの省略形 [#zb927040]
checkout = co
commit = ci
update = up
* その他 [#e8ff6491]
● CVSログからGNUスタイルのChangeLogを生成する ( cvs2cl.p...
$ cvs2cl.pl -r -b -t [--stdout] [files]
-h ヘルプ表示
-r リビジョン番号を含める
-b ブランチ名を含める
-t タグ名を含める
--stdout ChangeLogファイルではなく、標準出力に出す。
● INFOマニュアル $ info cvs
● キーワード展開
$Revision$
$Log$
● (クライアントとしての)リポジトリの設定、簡単な使用例
cvsのグローバルオプション、-d :pserver:jrandom@cvs.fooba...
又は
環境変数、CVSROOT=:pserver:jrandom@cvs.foobar.com:/usr/l...
ローカルなリポジトリの場合は、CVSROOT=/usr/local/cvs
リモートな場所のリポジトリの場所へのアクセス方式として、
pserver, ext(rsh,ssh; シェルは環境変数 CVS_RSH=ssh で指...
kserver(Kerberos), gserver(GSSAPI)方式がある。
リモートなcvsサーバへのログイン、ログアウト cvs login ; ...
● CVSROOT管理用ディレクトリのチェックアウト
$ cvs co CVSROOT
● 特定の時刻のスナップショットを入手する
$ cvs -q update -D "1999-04-19 23:59:59 GMT"
● Sticky特性を削除する(作業用コピーは最新のリビジョンに...
$ cvs -q update -A
● ブランチを作る
$ cvs -q tag -b Release-1999_05_01-branch
● 作業コピーの内容を調べる
$ cd myproj
$ cvs -q [-n] update [files] # -nを付けた場合、作業用コ...
$ cvs -Q diff [-u] [files]
△● リビジョン番号を調べる
$ cvs [-Q] status [files]
△● ログを調べる
$ cvs log [files]
△● 内容の変更を調べる
$ cvs diff -u -r 1.3 -r 1.4 [files]
リビジョン番号
リビジョン番号
$ cvs diff
全ファイルを対象に、リポジトリとの差分をとる
● hello.cの古いリビジョン番号1.3のファイルを取り出し、新...
(古いファイルを復活させる)
$ cvs -Q update -p -r 1.3 hello.c > hello.c
● hello.cにリビジョン番号1.4から1.3への変更パッチをhello...
$ cvs update -j 1.4 -j 1.3 hello.c
● ブランチからトランクへ変更をマージする
$ cvs -q update -A
$ cvs -q diff -u -r Release-1999_05_01-branch #ブランチ...
$ cvs -q update -j Release-1999_05_01-branch #ブランチ...
#現在の作...
( cvs -q update -j Release-1999_05_01-branch-fix-number-...
( #ブランチのタグ Rele...
( #ブランチの最新までの...
$ cvs -q update
$ cvs -q ci -m "merged from branch Release-1999_05_01-br...
● CVSのwatch機能 pp.142-153
● コミット後にログメッセージを変更する
$ cvs admin -m 1.7:"Truncate four-digit years to two in ...
● CVSで、サーバや、anonymousの運用のための設定 (未チェッ...
(1) /etc/groupに、cvsを追加
cvs:*:105:kfogel,sussman,jimb,noel,lefty,fitz,craig,anon...
(2) リポジトリの初期化、オーナーグループ、アクセス権を設...
local$ cvs -d /usr/local/newrepos init
local$ cd /usr/local/newrepos
local$ chgrp -R cvs . #ディレクトリにsetgidを実行して...
#親のものが引き継がれる(BSD,Linux)
local$ chmod ug+rwx . CVSROOT
(3) pserver方式を用いる時
/etc/servicesに cvspserver 2401/tcp を追加し、
/etc/initd.confに、
cvspserver stream tcp nowait root /usr/local/bin/cvs cvs...
or
cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/lo...
(tcpwrappersを使うシステムの場合)
を追加し、
kill -HUP "inetdのPID"
する。
(4) CVSROOT/passwd を作る
passwdファイルの形式は、「CVSユーザ名:暗号化パスワード:...
(パスワードはクリアテキストで送られるので、/etc/passwdと...
TIPS: cryptout.pl; 暗号化するユーティリティ(p111)
=================================================?
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5...
my $salt = sprintf ("%c%c", eval $randletter, eval $rand...
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}";
print "\n";
=================================================
(1') 複数のプロジェクトを扱う場合(p112)、
/etc/passwd にプロジェクト別のcvsユーザを追加
cvs-foo:*:600:600:Public CVS Account for Project foo:/us...
cvs-bar:*:601:601:Public CVS Account for Project bar:/us...
/etc/group にプロジェクト別のcvsグループを追加
cvs-foo:*:600:cvs-foo
cvs-bar:*:601:cvs-bar
(4') CVSROOT/passwd にユーザとプロジェクトの対応を作成
kcunderh:...:cvs-foo
jmankoff:...:cvs-foo
dstone:...:cvs-bar
twp:...:cvs-bar
(他) 読みとり専用ユーザ等を設定
CVSROOT/readers ファイルにユーザ名を含めると、全てのプロ...
CVSROOT/writers ファイルにユーザ名を含めると、含まれてい...
* ソースの更新手法 (( Reference: Karl Fogel, Moshe Bar共...
** 「トランクに何度もマージする」手順 [#m69fdbfd]
<<branch:Exotic_Greetings-branch>>
+-----------------+(Exotic_Greetings-1)----...
| . \ . ...
| . \ . ...
| . \. ...
<<trunk>> | . V ...
---+(Root-of-Exotic_Greetings)----+(merged-Exotic_Greeti...
. . . ...
. . . ...
. . . ...
*A**B* *C* ...
<<paさん、yaさん、とその他の人が仕事をしている状況>>
<<トランク>> <<ブランチ>>
pa$ cvs tag Root-of-Exotic_Greetings #ブランチのルート(...
pa$ cvs tag -b Exotic_Greetings-branch #ブランチを作る
pa$ cvs update -r Exotic_Greetings-...
pa$ emacs #何か編集
pa$ cvs ci -m "print exotic greetin...
. . . *A* . . .
ya$ emacs #何か編集
ya$ cvs ci -m "some very stable changes indeed"
. . . *B* . . . ★マージする★
ya$ cvs diff -u -r Exotic_Greetings-branch #ブランチの...
#ブランチの...
ya$ cvs update -j Exotic_Greetings-branch #ブランチのブ...
(ya$ cvs update #他の人のトランクへの更新を加える、念の...
(ya$ emacs #**競合**を編集)
ya$ cvs ci -m "merged from Exotic_Greetings-branch (con...
ya$ cvs tag merged-Exotic_Greetings
. . . *C* . . .
pa$ cvs tag Exotic_Greetings-1
pa$ emacs #何か編集
pa$ cvs ci -m "print a capitalized ...
pa$ cvs -q tag Exotic_Greetings-2
. . . *D* . . .
ya$ emacs #何か編集
ya$ cvs ci -m "Mention new Exotic Greeting features"
. . . *E* . . . ★マージする★(これを何度もする)
ya$ cvs -q diff -u -r Exotic_Greetings-1 -r Exotic_Gree...
ya$ cvs -q update -j Exotic_Greetings-1 -j Exotic_Greet...
...
(ya$ cvs -q update)
(ya$ emacs #**競合**を編集)
ya$ cvs -q ci -m "merged again from Exotic_Greetings-1"
ya$ cvs -q tag merged-Exotic_Greetings-1
||何度もすることのまとめ
|| 作業コピーはトランクである。
|| cvs -q diff -u -r "前回マージしたブランチのタグ" -r ...
|| cvs -q update -j "前回マージしたブランチのタグ" -j ...
|| cvs -q update
|| 競合を編集
|| cvs -q ci -m "ログメッセージ"
|| cvs -q tag "トランクに付けるマージ後のラベル"
** 「トランクの変更をブランチにマージする」手順 [#qacb499c]
<<branch:Exotic_Greetings-branch>>
+-----------------------------------------...
| . ...
| . ...
| . /
<<trunk>> | . /
-------------+------+(merged-Exotic_Greetings-1)--------...
.
.
.
*A*
<<paさん、yaさん、とその他の人が仕事をしている状況>>
<<トランク>> <<ブランチ>>
ya$ emacs #何か編集
ya$ cvs ci -m "clarify algorithm"
. . . *A* . . .
pa$ cvs -q update -j merged-Exotic_G...
...
...
(pa$ cvs update #他の人のブランチへの...
pa$ cvs -q ci -m "merged trunk, from...
pa$ cvs -q tag merged-merged-Exotic_...
||全般的な注釈
|| Stickyタグが設定されているスナップショットでは、コミ...
|| トランク(cvs update -A)、または、ブランチ(cvs update...
** 「トビウオ方式のマージ」手順 (簡単な方法) [#w1cfc20e]
<<branch-1>> <<branch-2>>
+-----------| +----------...→|
| \ |. \
| \ |. \
| \ |. \
<<trunk>> | V |. V
----------+----------------+----------------------------...
.
.
.
*A*
<<paさん、yaさん、とその他の人が仕事をしている状況>>
<<トランク>> <<ブランチ>>
ya$ cvs tag -b branch-1 #ブランチを作る
pa$ cvs checkout -r branch-1 #ブラ...
(pa$ emacs #何かを編集)
pa$ cvs ci -m "committing all uncom...
(ya$ emacs #何かを編集)
ya$ cvs update -j branch-1
(ya$ emacs #**競合**を編集)
ya$ cvs ci -m "merged from branch-1"
. . . *A* . . .
ya$ cvs tab -b branch-2
pa$ cvs checkout -r branch-1 #ブラ...
||注釈
|| yaさんがマージしている間は、完了するまでブランチの人...
** 「サードパーティソースを追跡する」手法 (本家の開発中の...
#VER1.0をリポジトリtheirprojにインポートする。
$ cvs import -m "import theirproj 1.0" theirproj them th...
#theirprojのソースを独自に修正
$ cvs co theirproj
$ cd theirproj
$ emacs #何かを編集
$ cvs update
$ cvs ci -m "changed digestion algorithm; added comment ...
#VER2.0がリリースされたので、リポジトリtheirprojにインポ...
$ cvs -import -m "import theirproj 2.0" theirproj them t...
.... #...
cvs checkout -jthem:yesterday -jthem theirproj #...
$ cvs co -j theirproj_1_0 -j theirproj_2_0 #theirproj_1_...
#更新を、thei...
#チェックアウ...
$ cvs update
$ cvs diff
$ emacs #**競合**を編集
$ cvs update
$ cvs diff
$ cvs ci -m "resolved conflicts with import of 2.0"
ページ名: