天天看点

CVS版本服务器指南

cvs 服务器

安装 Wincvs

一:进行设置 CVSROOT 的环境变量

具体步骤是点 admin —— log in 在 login settings 中选上 CVSROOT, 比如说我的设置是:

pserver:[email protected]/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 注意事项设置中提到)

继续阅读