SVN版本控制---zhang
来源:互联网 发布:大数据要什么学历 编辑:程序博客网 时间:2024/05/18 02:00
一:svn安装
安装文件:
第一步:安装svn,在D盘的目录下
其中:
bin:svn可执行命令(例如svnadmin等)
由于svn是安装版,当安装成功,会在电脑的环境变量中显示:
二:svn的一些常用命令
(1)判断svn是否安装成功。在cmd下执行:可以看到svn安装成功。
命令:svnadmin --version
(2)创建svn数据仓库
命令:svnadmin create D:\repository\svn\itcast
可以看到在指定的目录下生成:
(3)启动svn服务
命令:启动SVN服务:
svnserve -d -r D:\repository\svn\itcast [单仓库启动]
svnserve -d -r D:\repository\svn [多仓库启动] 建议使用多仓库
(4)判断svn服务是否启动成功
重新开启窗口
命令:netstat -an 查看3690端口是否被占用
(5)客户端从服务器端检出文件
命令:svn checkout svn://ip/repositoryName
如果服务器端开启的服务命令是【单仓库启动】:
由于服务器端已经是在itcast目录下了,所以客户端不需要在指定itcast了,可以写成:
但是如果服务器端开启的服务命令是【多仓库启动】:
此时客户端必须要指定哪个仓库,需要写成:
其中.表示检出到当前目录路径。
如果连接成功,可以在E:\svnclient\zhangsan会出现以下的效果:
其中zhangsan的文件夹中出现:
注意这个文件,不要去修改它
但是由于SVN服务器上没有内容,所以获取的是空的文件。相当于与服务器连接上了。
(6)客户端将文件纳入版本控制器
命令:svn add filename
在E:\svnclient\zhangsan的文件夹中,新建一个java类A.java,如果想要将A.java传递到服务器上,并纳入到版本控制。可以执行:
此时,在E:\svnclient\zhangsan的文件夹中显示。
(7)客户端提交文件
命令:svn commit -m "message" filename
其中-m表示需要为提交或操作服务器的文件做必要的说明。
这里不要执行:
按照要求,我们执行:
此时说明没有zhangsan这个用户的,这里必须要在服务端配置zhangsan的用户、权限才可以访问。
重点:修改服务器端配置:
修改itcast/conf文件夹下的svnserve.conf文件,配置:
其中anno-access = read表示匿名用户,为匿名用户从read(读)定义成write(写)的操作。
此时再次执行:svn commit –m “zhangsan init A.java” A.java,可以看到提交服务器成功。
(8)从服务器端获取代码
命令:svn checkout svn://ip/repositoryName
使用lisi的账号,获取zhangsan提交的代码。
这样在E:\svnclient\lisi可以看到:
如果lisi在本地写一个文件B.java,然后将B.java也上传到服务器,重复上面的命令,如图:
注意:你会发现提交后的版本变成2,说明服务器只要发生变化了,都会产生一个新的版本
(9)本地更新服务器上最新的代码
命令:svn update(更新所有文件)
svn:update [filename] (更新指定的文件)
此时在E:\svnclient\zhangsan的目录下,会看到:
总结:一般我们执行svn checkout svn://ip/repositoryName命令只要一次,就相当于和服务器取得连接,以后都会执行svn update,用来更新服务器端最新的代码。
(10)删除服务器上的代码
命令:svn delete filename
可以看到E:\svnclient\lisi下没有B.java
注意:真正的项目中,尽量不要使用delete语句,这样很容易误删,如果误删多了,恢复起来很麻烦,让它多着去吧,也不差这1,2个文件。
(11)恢复服务器上误删的代码
命令:svn revert filename
可以看到E:\svnclient\lisi下又会出现B.java
注意:只能恢复提交之前的状态,如果删除代码已经提交(commit),那么将不能再恢复
例如:如果执行删除(delete),然后提交(commit),再恢复(revert),则不能再次恢复B.java文件。
可以看到E:\svnclient\lisi不会会出现B.java
(12)其它命令
命令:
svn info-显示本地或远程条目的信息
svn list-列出版本库目录的条目
svn status-查看当前工作区状态
svn help-获取帮助信息
(13)如何将svn的服务不通过窗口开启,直接注册到计算机的系统服务中
注册Windows系统服务:
sc create SVN-Service binpath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r D:\repository\svn" displayname= "SVN-Service" start= auto depend= Tcpip
其中:
SVN-Service:为服务名。
binpath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r D:\repository\svn":使用svnserve的命令,启动D盘仓库为repository\svn文件夹下的所有服务。
displayname= "SVN-Service":显示的服务名称。
start= auto:自动启动
depend= Tcpip:依赖服务器(固定写法)
其次注意:
sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空格,而后面必须有空格。
可以在电脑的服务项中看到我们创建的服务。并且启动我们的服务。svn服务器就起来了。
附加:删除服务的命令
sc delete "服务名" (如果服务名中间有空格,就需要前后加引号),服务名称可以在服务的属性里找到,不要将服务名称误认为显示名称。
注意:如果是win7系统,必须以管理员的身份运行才能注册系统服务
三:安装TortoiseSVN客户端
安装文件:
按照路径安装即可。
安装成功,需要重新启动服务器,可以在桌面点击右键,看到。
(1)使用图形界面完成以上的工作
(2)创建svn数据仓库
(3)客户端从服务器端检出文件
使用Check Out命令与服务器取得连接,同时获取服务器上的代码。
出现:
(4)客户端将文件纳入版本控制器:
(5)客户端提交文件
注意:要修改itcastPic仓库下的conf文件,将anno-access = write,即匿名用户为可写。
这回就可以提交了。
但是项目开发中不能总是用匿名用户啊?应该指定用户和权限,操作svn服务器的仓库。应该怎么办呢?
【1】:这里要修改svnserve.conf文件,内容如下:
其中:
anno-access = none:表示不再使用匿名用户登录。
auth-access = write:表示指定用户并授权登录,并对仓库可写
password-db = passwd:passwd表示同级目录下的文件passwd生效,由它来指定svn的用户
authz-db = authz:authz表示同级目录下的文件authz生效,由它来指定svn的权限
注意:这个文件要求的格式很严格,必须要顶格写。
【2】:这里要修改passw文件,内容如下:
其中:
设置3个用户zhangsan,lisi,wangwu,密码都是123
【3】:这里要修改authz文件,内容如下:
其中:
itcastGroup = zhangsan,lisi:表示定义一个组,zhangsan和lisi是组里面的成员。
[/]:由于svn服务器的权限是针对于目录路径的,/表示根目录路径,即可以访问服务器下所有包下的文件。
@itcastGroup = rw:表示定义一个组,其中的权限为读写,这里定义组一定要加@,否则svn会认识是定义一个普通的用户。
wangwu = rw:表示定义一个用户wangwu,其中的权限为读写。
* =:*表示除了用户组定义的用户(zhangsan、lisi)以及单个用户(wangwu)之外的其他用户,他们没有任何的操作权限。
提交文件时:可以看见需要指定用户名和密码,并点击OK完成提交。
注意:这个钩,如果开发的时候,建议勾上,这样每次操作svn服务器的时候(更新和提交),就会记住你的用户名和密码,否则每个文件的操作都会提示你需要输入用户名和密码。
但是现在为了演示可以不勾,为了演示lisi提交代码,zhangsan更新代码的操作。
(6)从服务器端获取代码
Check out服务器端的代码
查看E:\svnclient\lisi的文件夹
lisi又创建了一个B.java,将B.java上传到服务器,首先先要纳入到版本控制(Add),然后才能上传到服务器(Commit)
(7)本地更新服务器上最新的代码
大家注意:以后工作开发代码的时候,天天早上的第一件事情必须要更新代码,保证你要开发的代码是最新修改后的文件,否则会出现版本的问题,再提交时的时候会出现问题。
(8)使用TortoiseSVN客户端查看svn仓库的内容
可以看到:
可以看到A.java和B.java都在svn服务器的根路径下,能不能使用文件夹用来管理我们的文件呢?
在桌面上创建project文件夹,cn/itcast包,以及包中的文件。
然后执行导入(Import):
然后查看svn的仓库,可以看到:我们的文件夹已经上传到了svn服务器
导出(Export)的使用,用来去掉.svn的文件。因为这些文件在系统上线的时候需要去掉。否则会占用很多的系统资源。
或者在可视化的仓库页面中执行:
看到相同的页面。
点击OK,会在桌面上看到我们导出的文件。
这次我们可以看到.svn的文件没有了。
(9)TortoiseSVN客户端的图标
【1】图标汇总
【2】正常状态
一个新检出的工作复本使用如下绿色的对勾重载。表示Subversion状态正常。
【3】修改后状态
在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作复本后被修改过,需要被提交。
【4】版本冲突
如果在提交的过程中版本出现了冲突,图标变成黄色感叹号。
例如:
zhangsan修改文件A.java
public class A{
private String id;
private String name;
}
然后提交(commit)到服务器
lisi没有更新最新的代码,直接修改了文件A.java
public class A{
private String id;
private String address;
}
可以看到2个版本的文件,是不允许在服务器中出现的,所以A.java无法再次提交,提示:
这样就需要lisi重新更新(update)代码,但是更新后的结果却变成:
解决方案:
使用TortoiseSVN工具,完成操作:
可以看到以下的页面:
选择A.java.mine冲突的行,点击右键:
其中:
Use this text block:表示用我本地的代码覆盖服务器的代码。表示当前选中一行会被覆盖。不建议使用,这样zhangsan开发的代码就会被覆盖。
Use this whole file:表示用我本地的代码覆盖服务器的代码,整个都文件覆盖,
更不建议使用。这样zhangsan就彻底疯了。
Use text block from ‘mine’ before ‘theirs’:不覆盖代码,表示让我本地开发的代码放置在前面,服务器上的代码放置在后面。建议使用。
Use text block from ‘theirs’ before ‘mine’:不覆盖代码,表示让我本地开发的代码放置在后面
服务器上的代码放置在前面。建议使用。
我们可以选择第四个操作:然后保存,关闭。
再选择A.java然后选择Resolved选项,表示编辑完成已经解决版本冲突问题:
最后再执行提交(commit),上传到服务器。
【5】文件上锁(只读)
如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。
例如:
zhangsan操作A.java文件。
选择【new】
选择【svn:needs-lock】,点击【OK】
然后将设置needs-lock属性的A.java文件提交(commit),会看到下面的图标
然后使用lisi更新(Update)代码,会看到下面的图标:
此时A.java变成只读的了,不允许任何人修改,那如果需要修改怎么办呢?往下看。
【6】文件上锁并释放锁(只读)
如果你拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。
解决方案:
zhangsan选择A.java后选择SVN Get lock…,获取锁
此时图标变成以下的形式,表示只有zhangsan能够修改该文件,lisi和其他人是不允许修改的:
lisi再获取A.java文件锁的时候,即执行SVN Get Lock的命令,会弹出以下的提示,表示zhangsan已经在修改文件了,lisi是不允许修改该文件的提示,如图。
注意:
(1)只有zhangsan释放锁,即提交(Commit)的操作,lisi才能重新获取锁,并同时获取svn服务器上的最新版本的文件代码,对A.java进行编辑和修改。
(2)如果没有修改A.java,可以不需要执行提交(Commit)的操作,可以选择释放锁(Release lock)的选项:
(3)这里要求A.java只能被一个人修改,不允许多个人修改,要求开放人员修改完成后要及时提交释放锁,否则其他人员就会无法获取,就会找你麻烦了。
这种操作一般的项目组都建议少用,一个文件多个人修改,再合并,开发效率比较高。
【7】服务器计划删除文件
这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。
【8】服务器计划添加文件
加号告诉你有一个文件或是目录已经被计划加入版本控制。
四:复杂的权限控制(事例)
(1)项目组对svn上的包路径设置权限
事例:
需求:如果对开发的包结构限制权限
例如:zhangsan开发domain包中的文件,其他人不允许修改
lisi开发dao包中的文件,其他人不允许修改
wangwu开发service包中的文件,其他人不允许修改
首先需要设置仓库中的conf文件夹的svnserve.conf文件:
测试:
zhangsan可以操作cn.itcast.domain包下的内容。
zhangsan不可以操作cn.itcast.dao包下的内容。
使用lisi操作cn.itcast.dao包下的内容,完成操作。
(2)项目组对提交信息的message做字数限制,强制要求输入message消息
强制开发人员输入对文件描述的信息,这样便于对svn服务器上文件日志的管理。
zhangsan右键点击属性(Properties)
点击【new】
选择【tsvn:logminsize】,即日志最小字数显示,填写5表示要输入至少5个字符
点击【OK】,保存
这样我们在提交文件的时候就会看到,如果没有填写日志message,【OK】键是不允许操作的:
(3)项目组对开发版本的控制
例如:项目组下午开发的代码不符合要求,要回退到上午开发的版本,该怎么办呢?
zhangsan在空白处点击右键,选择更新版本(Update to revision)
点击【Show log】
可以查看当前目录操作所有日志信息,对应每个版本
可以恢复到2014年1月23日开发的版本
选择后,点击【OK】
提示第3个版本,然后点击【OK】,可以看到这就是第3个版本的那些文件。
如果想获取服务器上最新的代码,可以再执行更新(Update)的操作。
五:svn与eclipse整合
(1)安装
下载SVN插件(http://subclipse.tigris.org)
我们使用版本eclipse_svn_site-1.6.5.zip
解压到一个文件夹中
在D盘的目录下:创建并拷贝features和plugins文件夹:
进入eclipse 安装目录中dropins目录并创建一个subclipse.link 的文本文件(文件名任意)。内容为:path=解压缩路径
重新启动eclipse可以看到安装成功
(2)eclipse操作svn
【1】选择SVN资源库研究:
【2】右键,新建资源库位置
【3】添加新的SVN资源库位置
【4】输入用户名和密码,这次可以保存密码,要不每个文件都会提示需要输入用户名和密码。在SVN资源库研究中看到服务器中的代码。
【5】将服务器的代码检出到本地进行开发
选择svn资源库,选择【检出为】:
可以重命名项目名称,也可以使用默认。
放置到当前的默认workspace空间下
这样就可以在javaEE的视图中进行开发了。操作和之前命令的一样(update,commit等)
【6】这样的svn放置到eclipse中非常不规范,不像是个开发的web工程,我们先断开连接,然后按照正规的开发习惯,建立web工程,并使用svn服务器做版本控制。
先断开连接。选择项目右键,选择断开连接。
选择【并且从文件系统中删除SVN元信息】
可以看到:
即,对应的文件夹下不会存在.svn的文件,如图:
(3)Subversion目录规范
创建三个顶级目录
/trunk 存放开发的“主线”
/branches 存放支线副本
/tags 存放标签副本
Subversion 提供了主线、分支管理技术,使得在软件开发中可以更方便、灵活的对项目的进度、版本的发布、版本的维护、软件功能的拓展与定制进行管理。
主线(trunk):一个项目建立时就存在,并伴随着项目的开发成长而不断的成长,直到项目完全结束。
分支(branch):一般是指功能分支,例如:我们的某个项目要添加一个模块,但这个模块又比较复杂,实现难度比较大。为了不影响主线的稳定,我们就可以创建一个功能分支来专门开发这个模块,当这个模块开发完成以后,并通过测试部门的各项测试,再合并到主线中去。再比如,我们的电力项目已经开发完成了,但是这个项目是给北京电力公司做的,现在我们又接到了一个电力项目,不过是要给大连电力公司的。现在大连电力公司要求我们给他们定制一些功能。我们又不想再主线上进行修改,这个时候,我们也可以创建一个分支,并在这个分支上开发,这时是不会对主线造成影响的。等给大连电力公司开发完成了以后,我们发现,他们要求的有些功能其实很好,以后别的地方可能也需要同样的功能。这个时候我们就可以根据我们的需要,将有用的模块有选择的合并到主线中来。
标签(tag):标签和分支一样,也是一个目录,不过这个目录中一般存放的是发布的信息(当然我们也可以只用分支,但是用标签更清楚明了一些)。还是拿我们的电力项目来举个例子:我们的电力项目开发完成了以后,要拿给北京电力公司用了,也就是要发布(release),假设这个版本叫做1.0.2。这个时候,我们就要创建一个标签,当北京电力公司用了三个月,发现了一个 BUG,我们只需要签出这个标签中的代码(它和我们刚提供给北京电力公司时候的是一模一样的),进行调试,并修正这个 BUG。然后再发布一个版本,假设叫做1.1.0,这个时候我们就在创建一个 1.1.0的标签……
要注意,标签目录里面的代码,要进行严格的控制,除了修正 BUG 外,不能做任何其他的事情。
【1】创建svn资源仓库
【2】修改svn资源仓库的3个文件的配置
svnserve.conf文件(服务配置)
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
passwd文件(用户)
zhangsan = 123
lisi = 123
wangwu = 123
authz文件(权限)
[/]
zhangsan = rw
lisi = rw
wangwu = rw
* =
【3】导入正确的目录规范
创建3个文件夹
右键执行导入(Import)
选择新的仓库地址,点击【OK】
查看上传的结果,右键选择【Repo-browser】:
看到我们的规范目录结构
【4】使用eclipse连接itcastEclipse的仓库
先废弃之前的仓库
再创建新的仓库
点击【Finish】,可以看到。
【5】在eclipse创建web工程并发布到svn服务器上
创建web工程,并建立开发必要的一些包结构。
选择项目,点击右键,点击【Share Project】
新建一个的资源库位置,指定trunk的文件夹下。
使用项目名称作为文件夹名,点击【Next】和【Finish】
可以看到:
+号表示现在还没有提交上去,需要执行提交(Commit)
点击【OK】
此时在SVN资源库研究中看到我们提交到服务器的项目。
【6】在eclipse获取svn服务器上的web工程
右键项目,点击【检出为】
在javaEE的视图上,可以看到我们从svn服务器上检出的项目
【7】在eclipse上操作web工程(重点)
在cn.itcast.svn.domain中创建User.java,并提交到服务器,并更新服务器上代码,然后再次修改本地代码,看User.java的变化。
eclipse操作svn服务器几个重要的命令
【与资源库同步】:对比与svn服务器不同的文件,如果用户需要使用svn资源库上的文件,可以选择这个选项。
表示:(Incoming mode)服务器上存在新的内容,但是本地还没有更新,说明本地是落后版本的,需要更新。
表示:(Outgoing mode)本地修改了新的内容,但是没有提交到服务器,说明本地是最新的版本,需要提交。
表示:(Incoming/Outgoing mode)将上面介绍的2个功能合并到一起,只要不一样的都显示。
此时选择文件点击【提交】就可以了。
表示:(conflicts mode)列出所有文件的版本冲突。如果你在开发过程中发现这里的文件过多,就意味着你要遇到麻烦了,需要一个一个文件进行版本合并再提交。
【更新】:更新服务器的最新代码到本地,即Update操作
【提交】:提交本地的代码到服务器,即Commit操作
【显示资源历史记录】:查看当前文件的历史记录情况,谁修改过这个文件,用来跟踪每个人对文件的修改,并用来查看谁动过这个文件。
还可以对比2个文件发生的变化。
选择2个文件后,点击比较(Compare)
【分支/标记】:用来记录标签版本
将User.java的上面添加注释:
/**
* Version:1.0
*/
public class User {
private Integer id;
private String name;
}
并且提交(Commit)到服务器
选择【分支/标记】,并指定URL为svn://127.0.0.1/itcastEclipse/tags/v1.0
点击【Next】,选择最新的版本,点击【Finish】完成,在SVN资源库研究视图中可以看到:
这样第一个版本的项目就开发完成了。
如果第一个版本上线之后,需要在新的版本的基础上再次修改,但是不要改动第一个版本。怎么办?
例如:
将User.java进行修改,修改的版本也在上面添加注释为Version:1.1:
/**
* Version:1.1
*/
public class User {
private Integer id;
private String name;
private Integer age;
}
重复上面【分支/标记】的操作,在SVN资源库研究视图中可以看到:
在tags的文件夹下存放着2个版本(v1.0和v1.1)的项目,而且内容是不同的。
注意:在开发过程中,只有项目是一个固定的版本时才会放置到tags的文件夹下。这样有助于记录项目的升级过程。
【导出】:将svn服务器的项目导出指定的目录下,这样可以将项目去掉.svn的文件。
【清理】:清理本地工程项目。
【断开连接】:断开本地与服务器的连接。
六:svn与apache服务器整合
优点:将svn放置到apache服务中统一管理,并对用户名的密码进行加密处理,保证svn服务器的安全。
(1)安装
按照路径安装即可,随便填写信息,针对所有用户,端口是80,点击【Next】,并【完成】。
安装成功,在桌面的右下角显示:,在服务中显示:
安装目录:
(2)配置
【1】配置文件
打开Apache安装目录下
D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置文件
将下列2行前方的#移除(第83 行):
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
并同时在上面两行的下面增加以下两行(一定放在这个位置)
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
配置后如图:
【2】复制文件
找到svn的安装目录:Subversion 安装目录下的以下两个文件
bin/mod_authz_svn.so
bin/mod_dav_svn.so
复制到D:\Program Files\Apache Software Foundation\Apache2.2\modules安装目录下modules 目录中。
【3】SVN与Apache整合
使用Apache 安装目录下的bin/htpasswd.exe 可执行文件来生成授权文件,第一次生成使用-cb 参数:
htpasswd -cb [filename] [username] [password]
例如:htpasswd -cb passwd.apache 用户名 密码 (其中用户名需为svn中添加的用户名)
将生成的passwd.apache 文件移动到SVN版本库中\conf 目录下
在cmd下运行,查看htpasswd下的命令:
执行:D:\Program Files\Apache Software Foundation\Apache2.2\bin>
htpasswd -cb test_passwd zhangsan 123
其中test_passwd是文件名,zhangsan是用户名,123是密码
如果再添加用户lisi可以执行:
D:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -b test_pass
wd lisi 123
这里注意:不要执行-c,这样会覆盖之前的文件。即zhangsan的用户和密码就被lisi替换了。
查看D:\Program Files\Apache Software Foundation\Apache2.2\bin下生成的test_passwd文件,可以看到生成的用户名和密码:
同时将该文件test_passwd复制到SVN版本库中的仓库\conf目录下
【4】添加配置:
apache 安装目录下的
D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 文件的最后面加入:
#配置虚拟目录#即访问的路径
<location /svn/itcast>
#引用远程访问模块
DAV svn
#项目版本库路径#
SVNPath D:\repository\svn\itcastEclipse
#授权文件#
AuthzSVNAccessFile D:\repository\svn\itcastEclipse\conf\authz
#所有用户都需要身份验证#
Satisfy Any
Require valid-user
#验证方式#
AuthType Basic
#项目的名称#
AuthName "itcast"
#用户文件#
AuthUserFile D:\repository\svn\itcastEclipse\conf\test_passwd
</location>
【5】访问地址
这里要重新启动Apache Service Monitor:
访问方式:
http://localhost/svn/itcast
输入用户名zhangsan,密码123,显示:
测试:
TortoiseSVN的资源库
eclipse的svn资源库:
七:CVS开发
(1)安装
默认安装即可,可以安装在D盘的目录下:
(2)CVS的仓库
在D:\repository的目录下创建cvs的仓库
安装完成后,打开 “开始”菜单——>“程序”——> “CVSNT”——> “CVSNT Control Panel” 程序 ,打开cvs管理窗口,选择“Ropository configuation”选项卡,单击“add”按钮添加仓库,location为仓库文件夹存放路径。选择一个预先存在的目录路径。Name会自动改为“/目录文件夹”! 这个名子也可以修改(即:仓库访问别名)。点击OK按钮,它会提示你“这个文件夹不是cvs仓库,是否初始化?”的英文提示。点击“是“。创建仓库完毕。:
选择【Repository configuration】 点击【Add】,配置并指定仓库的位置,点击【OK】:
其中CVS的界面说明:
l Server Information,用于查看服务器信息及一些简单的统计信息;
l Respository configuration,配置CVS仓库,包括添加、删除等;
l Server Setting,配置服务器运行的一些参数,诸如端口、加密、压缩等选项;
l Compatiblity Options,有关兼容性的选项,在这里主要配置一个兼容非cvsnt客户端的版本响应为cvs 1.11.2;
l Plugins,插件配置,安装完成可以不用管的~;
l Advanced,安装完成后也不用管了;
l About,在这里可以管理cvsnt服务的状态,停止或启动cvsnt和cvsnt lock服务。
在CVS的仓库中显示以下文件:
默认启动CVS的服务
(3)eclipse操作CVS
在eclipse上选择CVS的仓库,如图:
空白处右键,【new】,选择【Repository location】
注意:这样将本地机器的用户名和密码作为CVS的用户名和密码显然不是很合理。那该怎么办呢?
解决方案:
set cvsroot=:pserver:Administrator@127.0.0.1:/CVS
使用系统用户绑定到当前的CVS项目上
cvs login
登陆并输入系统用户密码
cvs passwd -a -r Administrator zhangsan
cvs passwd -a -r Administrator lisi
例如:
可以使用zhangsan和lisi进行测试:
显示的结果:
创建好的CVS仓库,如图:
下一步,
【1】使用eclipse创建web工程,如图:
【2】然后提交到svn服务器上。
选择Share Project
选择CVS
选择已经存在的CVS仓库路径
点击【下一步】,点击【完成】
可以看到,我们的项目已经上传到CVS服务器上。
【3】本地获取cvs仓库上的代码
方式一:
Check Out:以CVS服务器上的项目的名称,作为下载到本地的项目名称。同时下载到本地的默认workspace的空间下。
但是如果这样,会覆盖掉我们本地的代码。
方式二:
Check Out As…:可以改变下载到本地的项目名称,同时可以改变下载到的目录位置。
例如,可以进行以下的配置,改变项目名称,如图:
改变下载项目存放的路径位置:
点击【Next】,点击【Finish】,可以看到itcastCvsProjectService项目下载到本地。
其中操作项目的时候,和SVN的操作类似,如图:
【Synchronize with Reository】:与资源库同步,对比与svn服务器不同的文件
【Update】:更新,更新服务器的最新代码到本地,即Update操作
【Commit】:提交,提交本地的代码到服务器,即Commit操作
【Show History】:显示资源历史记录,查看当前文件的历史记录情况,谁修改过这个文件,用来跟踪每个人对文件的修改,并用来查看谁动过这个文件。
【Tag as Version】:分支/标记,用来记录标签版本
- SVN版本控制---zhang
- 版本控制SVN
- 版本控制工具-SVN
- 搭建SVN版本控制
- SVN版本控制
- SVN版本控制
- svn版本控制说明
- SVN版本控制
- svn版本控制说明
- Subversion svn版本控制
- svn版本控制
- SVN版本控制
- SVN版本控制初探
- git-svn 版本控制
- svn版本控制
- 搭建SVN 版本控制
- svn版本控制管理
- 版本控制之SVN
- poj 3067 树状数组
- linux syslogd服务
- Issues
- shell--let-expr
- log4net修改数据库连接字符串和写自定义信息
- SVN版本控制---zhang
- Maven实战学习笔记(聚合和继承)
- Qt插入数据库错误
- 2014 Apple WWDC
- 百度下拉框对我们seoer的启示不容忽视
- Anti-Screen Capture(Prevent Screen Captures)截屏与反截屏
- 大数的加减运算
- hdu 1711 Number Sequence
- linux tee命令