Wincvs
常用命令:
安装
Wincvs
一:
进行设置
CVSROOT
的环境变量
具体步骤是
点
admin
——
log in
在
login settings
中选上
CVSROOT,
比如说我的设置是:
pserver:zhw@SERVERIP/cvsserver
其中
pserver
代表了一种
CVS
的一种远程访问方式;
zhw
是我这个客户端在服务器上的用户名,在服务器上设置
;
SERVERIP
是
CVS
服务器的
IP
地址;
cvsserver
是服务器上的其中一个仓库名。
第一次设置好后
以后设置就可以不用再输入
,直接点上就可以。
设置好后,输入正确的登入密码就可以连接访问到服务器仓库的内容了。
二:已操作的常用的
CVS
命令
1 checkout (co)
把服务器上的内容导入到客户机上。
admin—checkout module ,
然后会出现一个
checkout setting
选项。各个选项的具体注意事项见后面的说明
2 checkin (commit, ci)
把从仓库中拿出来的文件或者文件夹(经过修改后)再次提交给仓库
(注意如果这个文件之前在仓库中没有就要先
add
)
3 import
把选中的文件或者文件夹导入到仓库中,此步骤只在文件或文件夹第一次导入时使用,其它时候尽量用
add
和
commit
4 update
更新本地文件,从服务器将修改取到本地,它可以更新一个文件,一个文件夹,或者整个目录层,更新对仓库是没有影响的。
5 add
把某个文件或者文件夹添加到仓库中,需要两步。第一步是
add
第二步是
commit
6 status
可以显示当前选中的文件的具体参数和状态
其中有几个要能看懂:
up-to date代表现在要的文件是最新的
locally modified
代表说你曾经修改过但没有提交,版本比仓库里的新
needing patch /
表明已经有人修改过文件并且已经提交了,版本比仓库的旧
needs merge
你曾经修改过文件,但是也有别人修改过了文件,而且也提交给了仓库
7 release
点
trace-----release
效果等于完全取消了
checkout
的效果,把下下来的文件等完全从工作文件夹中取消掉,只能通过再次从仓库中
co
才可以(比较
:在
windows
资源管理器下把某个文件删掉的话,在
cvs
下并没有真正的删去,可以不需要
co
来实现再次恢复
)
各个命令操作中注意的问题:
1
添加文件和文件夹(
add-commit//import
)
向
cvs
仓库中添加一个文件的时候一定要保证被添加的文件或者目录在当前目录中,也就是在当前目录中必须保证存在一个
cvs
文件夹才可以进行添加。
所以就是要从大目录开始提交,
再一步步往下层走。
其中有
2
种方式
a
选中某个文件
modify—add
这个只能是一个一个文件添加
b
选中某个文件夹然后
macros---recursive add
(回归添加),这样就能把该文件夹下的所有文件一次性添加(虽然有一个
auto-commit
但是其实是不可以同时实现提交而要接着做下面的这个操作)
,而不需要一个个的去添加;再次选中这个文件夹,通过
commit
把文件夹下的所有文件都提交到仓库中去。
Ps:
与
import
的区别
import
的功能缺省下是可以把整一大个目录树添加到仓库目录下,作为一个
module .
选
remote –import module
后会出现一个
import
的过滤器,要对每一个警告进行设置(主要是设置哪些文件类型要被过滤掉,即不存入仓库),然后出现一个
import setting
的一个选项,通过这个设置可以把要
import
的东西放在仓库非第一层目录下
,
这种做法的优点是可以把所选文件夹下的所有文件、文件夹以及文件夹下的所有文件都提交给仓库,但是同时也存在一个不足之处就是必须得知道要放在服务器中的详细路径才可以。
2 checkout
在
checkout setting
的设置中要注意
一定要核对
local folder to checkout to
的地址是否是你
所想把内容
保存在你电脑上的地址
module name and path on the server
这个选项是指你要从仓库中取得文件在仓库中的目录(可以在命令行中通过
cvs ls (
下一级文件名
)
来查看仓库中所具体拥有的文件和文件名,也就能知道了所有文件的路径)
3 update
更新
选
modify---update
其中每一个设置都是很重要的
update setting
中第1个选项
实现更新当前文件
第
2
个选项是说把仓库中存在但现在在该目录下未出现的所有文件都下到本地来,也就说可以把别人的修改合并到本地来
update option
中除了选填的是那
branch
外其他都是被认为是被打上了一个
tag
,打了
tag
的文件是不能被提交的,这也就是为什么对这样操作后的版本文件操作后想再次提交确总是出现错误,提示说该文件不是一个
branch
。我们可以通过版本创建的时间,等等信息来
update
出自己想要的版本。
其中
reset any sticky tags/date/kopts
选中它,
就可以把原来打的
tag
给取消。
Merge
选项时要注意,比如在某
1.1
版本的基础上做了修改
生成了
1.2
的版本,现在我们又想取出
1.1
的版本,我们就要通过
merge
来做。(通过版本号
update
出
1.1
来是不正确的做法,这样会不能再提交,相当于对它打了一个
tag
,打了
tag
的是不能再提交的了
)
几种常见错误提示原因及解决办法
1
“
No cvsroot specified!please use the ‘-d’option
:or set the cvsroot environment variable
”
这个情况多是因为你所操作的对象所在目录级没有
cvs
文件夹,可以通过任何方式获得
cvs
文件夹来解决问题
,有的时候你选中的目录层并不是
你所操作的对象这样也能解决问题。
可见
cvs
文件夹是否存在
相当的重要,它直接决定了很多操作是否能完成
2
“
cvs server: encoder.c added independently by second party
”
如果你要
cvs add temp
出现上面信息,这是因为仓库在同样的位置已经有了同样的文件,仓库里已经有这个文件你再要
add
就不可能了,所以可以给文件改个名,再进行
add
就可以正确
add
了。
3
“
cvs server sticky tag ‘1.2’ for file ‘aa.c’is not a branch
cvs[server aborted]: corret above errors first
”
出现这个错误提示是因为通过版本号把
1.2
版本的给
update
下来,这相当于已经对它打了
tag
,再对它修改
提交是不允许的
。如果是通过
branch
给
update
下来的就是可以修改提交了(这在
update
注意事项设置中提到)