CVS_TIPS
4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
----
○メインブランチに新しく add したファイルを、ブランチにも組み入れる
ブランチにおいて下記を実行
$ mv CVS/Tag CVS/Tag.bak
$ cvs up viextendvstart.c
$ cvs tag -b latest_OS_V2_0I viextendvstart.c
$ mv CVS/Tag.bak CVS/Tag
$ cvs up -r latest_OS_V2_0I viextendvstart.c
----
○ファイルのリネーム、移動
$ rlogin -l root liberte
# cd /disk6/Master/cvsmdev2/PR
# cp libultra/io/leointerrupt.c,v libleo/api/
# logout
$ cd $ROOT/PR/libultra/io/
$ rm leointerrupt.c
$ cvs rm leointerrupt.c
$ cvs commit
$ cd $ROOT/PR/libleo/api/
$ cvs up leointerrupt.c
$ cvs status -v leointerrupt.c (タグを見る)
$ cvs tag -d patchNg980423 leointerrupt.c (今までのタグを消す)
$ cvs tag -d patchNg980305 leointerrupt.c
$ cvs tag -d latest_OS_V2_0I leointerrupt.c
$ cvs tag -d OS_V2_0I leointerrupt.c
$ cvs tag -d OS_V2_0H leointerrupt.c
$ cvs commit -f leointerrupt.c (移動させたことをログに残す)
---
○ファイルの比較
$ cvs diff [-r[revision]] [filename]
(-r が指定されていなければ)ローカルとマスターの指定ファイルに対し
diff を実行します。-r オプションで比較対象のリビジョン番号を指定できます。
ファイルを指定しなければカレント以下の(マスター側にある)
全てのファイルが対象になります。
---
○ 変更履歴
$ cvs log [filename]
(マスターにある)指定ファイルのリビジョン履歴を表示します
ファイルを指定しなければカレント以下の(マスターにある)
全てのファイルが対象になります。
---
○ ローカルツリーの更新
$ cvs up(date) [filename]
指定ファイルの status が Needs patch の時に限り
ローカルにある指定ファイルがマスターのもので上書きされます。
指定ファイルの status は Up-to-date に変わります。
---
○ ロックの解除法
cvs コマンドを Ctr-c したりすると、たまにそのディレクトリで以後の cvs
コマンド実行が拒否されてしまうロックアウト状態になることがあります。
この場合はルートでマスターツリーに入り、ロックファイルを削除する必要が
あります。ロックファイルの削除には細心の注意を払ってください。
# cd /disk6/Master/cvsmdev2/PR/**/
# rm #cvs.lock
# exit
---
○ ローカルファイル情報の取得
$ cvs status [filename]
指定ローカルファイルのステータス、リビジョン番号、その他の情報を
取得します。ファイルを指定しなければカレント以下の(マスターにある)
全てのファイルが対象になります。
Status には以下の4種類があります。
Up-to-date 最新です。
Needs patch マスターが更新されています。
Localy modified ローカルが変更されています。
needs merge 上の2つが重なった状態です。
update も commit も行えません
通常は grep と組み合わせて使うことが多いでしょう。
ex. $cvs status |grep Status: |grep Locally
---
○ マスターの更新
$ cvs commit [filename]
指定ローカルファイルをマスターの新しいリビジョンとして登録します。
commit を行えるのは status が Locally modified のファイルのみです。
ファイルを指定しなければカレント以下の(マスターにある)
全ての Locally modified ステータスのファイルが対象になります。
ただし、それ以外の対象ファイルが全て Up-to-date である必要があります。
実行後エディタが起動しますので、更新内容の簡単な説明を入れてください。
commit 実行後は n64-stree@ メンバに 必ずメイルで報せて下さい。
メイルのサブジェクトは[S-Tree]で始めてください。
---
○ ブランチの出し方
$ make clobber
$ cvs up -r [tag]
tag によって指定されるブランチリビジョンを出現させます。
tag 名は cvs status の Sticky Tag: に表示されるものです。
そのディレクトリに存在するブランチを知りたいときは
$ cvs status -v [filename(anything ok)] | grep branch
を実行してください。
ブランチから抜け最新のリビジョンに戻したい場合は
$ cvs up -A
を実行します。
---
○ commit したバージョン(リビジョン)をダウンさせる
$ cvs up -p -r [revison] [file] > [file]
$ cvs commit [file]
commit のアンドゥーは不可能なため、
以前のリビジョンを取り出して上書きすることになります。
ブランチ上でこれを行いたいときは
$ cvs up -r [tag]
を事前に実行しておきます。
---
○ あるタグの時点から、どのファイルを変更したかを調べたい。
$ cvs diff -r TREESYNC00 | & egrep '(cvs diff:|RCS file:)'
変更したファイルは、RCS file: で始まる行で報告されます。
タグの時点で存在しなかったファイルは
cvs diff: tag TREESYNC00 is not in file xxx
と表示されるので分かります。