在现实的软件开发中有可能遇到的问题:
代码管理混乱
备份多个版本,占用磁盘空间大
解决代码冲突困难
容易引发BUG
难于追溯问题代码的修改人和修改时间
难于恢复至以前正确版本
无法进行权限控制
项目版本发布困难
参照SVN 安装界面.doc文件
F:\work\course\svn\repository\svn
上面的命令指的是在指定的目录下创建一个仓库。
Svnserve –d –r 文件路径
上面的这个命令可以检查端口号,一般svn默认的端口号是3690.
说明该端口号正在被监听
当把命令窗口关闭以后,监听就没有了,所以这种启动方式必须把命令窗口打开。
sc create SVN-Service binpath= "F:\work\course\svn\bin\svnserve.exe --service -r F:\work\course\svn\repository\svn " displayname= "SVN-Service" start= auto depend= Tcpip
binpath为执行命令所在的路径
-r 为仓库的路径:这里配置的多仓库
也就是说可以在svn下建立很多仓库,例如建立itcast仓库
访问的时候:svn://localhost/itcast。建立oa,则访问的时候
svn://localhost/oa
如果路径改为F:\work\course\svn\repository\svn\itcast,只能访问itcast这一个仓库。
当成功执行上述的命名以后,就可以在window的服务下面看到类似的内容。
sc delete SVN-Service
说明:把仓库中的某一个项目checkout出来
svn checkout svn://localhost/itcast F:\develop\workroom\user
创建一个客户端操作文件夹
F:\work\course\svn\develop
在该文件夹下建立两个文件夹,代表两个用户user1和user2
利用命令把itcast仓库checkout到user1目录
创建完毕以后user1下会多一个文件夹
这说明创建完毕了。
在客户端创建一个文件,把该文件加入到该仓库中,加入到版本控制中
在客户端user1中新建一个txt文件:a.txt
说明:把a.txt加入到了itcast仓库,加入到了版本控制中
说明:当把一个文件加入到指定仓库以后,接下来的操作就是提交。在提交的时候必须写一些说明(可以写这次提交都做了一些什么内容)
说明:当执行这个命令的时候失败了。因为用的是匿名用户登录的。
在F:\work\course\svn\repository\svn\itcast\conf路径下有一个文件:svnserve.conf
该文件有一句这样的描述:
# anon-access = read
说明:匿名用户只能有读的权限,所以这里应该改一下:
anon-access = write
当改完以后再次执行次命令的时候:
说明命令执行成功了。在itcast仓库中加了一个文件a.txt,版本号为1
把a.txt文件checkout到user2中,并且版本为1
文件a.txt在user2下再次进行修改
把user1下的a.txt文件更新到版本2
当删除掉客户端的一个文件时,可以使用svn update命令把服务器上的版本download下来。
1、 在F:\work\course\svn\repository\svn路径下建立一个文件夹为itcast
2、 进入itcast目录,如图所示
3、 执行完第二步后,在itcast目录中产生了
这个目录和用命令行创建的工程的目录是一样的。
在F:\work\course\svn\develop目录下创建两个用户user1和user2,即两个文件夹。
把itcast仓库放入到user1中
执行完上述操作以后itcast仓库就被下载到了user1中
添加完毕以后会出现如下的图标:
在执行commit之前还要修改权限的部分。
这个时候,user2的icast仓库中已经存在a.txt文件了
可以针对user1用户中的a.txt文件进行上锁的操作。
当输入用户名和密码的时候,就上锁了,上锁的突变如下所示:
当用户user2试图再次修改此文件时,会报如下的错误:
添加一个属性:svn:need-lock,值为true,确定以后变成如下的图标:
这个图标表明再次修改必须上锁。
点击remove就可以了
当user2对a.txt进行操作的时候,user2操作的a.txt文件并不是最新的。所以报如下的错误。
该图标表示文件有冲突了。
a.txt.mine表示user2用户最新的
a.txt.r11 表示提交之前的
a.txt.t12表示服务器上最新的
Theirs表示服务器上的
Mine 表示自己的
Merged 表示合并以后的版本
可以在冲突的那一行点击右键,选择这四个选项中的其中一个。这个时候,Merge就会发生变化。
这样就可以解决冲突的问题。
当解决完毕以后,告诉svn已经解决完了
在itcast库的config目录下有授权的相关内容。
定义所有认证和授权政策。
匿名用户的访问权限,应该是什么访问权限都没有
anon-access = none
认证用户授权
auth-access=write
指定用户的认证文件为passwd文件
password-db=passwd
authz-db=authz
指定用户的授权文件为authz。
存放项目成员账户信息
[users]
# harry = harryssecret
# sally = sallyssecret
等号左边代表用户名,等号右边代表密码,所以可以这么添加:
user1=user1pwd
user2=user2pwd
这样系统中有两个用户user1,user2,密码分别是user1pwd,user2pwd。
复杂的群主授权控制
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
groups是组的意思
等号左边的是组名,等号右边的是组的成员
所以可以写
svn_group = user1 把user1加入到svn_group组中
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
# [repository:/baz/fuz]:指出针对哪个仓库
# @harry_and_sally = rw:针对某一个仓库,对组进行授权
# * = r:对除了这个组以外的其他用户进行授权
[itcast:/]:针对itcast仓库
@svn_group = rw 针对svn_group组进行授权
user2 = rw 针对user2用户进行授权
* = 除了以上用户以外的其他用户都不能授权
[itcast:/doc]
user1 = rw
* =
以上配置说明:针对itcast仓库的doc目录,只有user1有读写权利,其他的用户都没有。
当配置完成权限以后,当在user1用户下或者user2用户下修改了一个文件,进行commit的时候,系统会自动提示如下:
这个时候只有输入正确的用户名和密码信息才能提交。
从官网上下载插件http://subclipse.tigris.org,可以从这个网站下载到最新的svn插件。
在F:\work\course\svn下创建插件目录myplugins\svn\eclipse,把下载完的解压后的两个文件夹放入到该目录下
在myeclipse安装的dropins目录下创建svn.link文件
Link文件中的path
path的值就是svn插件的目录所在。
打开如下的视图:
准备新建一个资源库的位置
输入库的url:
itcast库就被导入进来了
在新建项目的时候,选择从svn上检出项目
选择现有资源库的位置
检出的项目在myeclipse中
可以利用Compare with的功能的子功能
基本修订版
最新版本的上一个版本
利用这个功能可以和以往的版本做对比。
可以选择某一个版本的内容覆盖当前版本的内容
新建一个项目,做如下的操作:
选择svn
把项目保存在itcast资源库
存放开发的主线,团队成员在开发的时候一直要用这个库中的内容
存放支线副本:当项目稳定以后,先发布到tags下,如果发现了bug,再从tags下检出到branches下。在该版本下进行bug的修复,把修复完毕的稳定的版本重新发布到tags下。
存放标签副本,也就是存放稳定版本
一个公司开发了一个oa系统,随后发布了一个版本v1.0,由于这个版本还是比较成功的,然后客户提出了更多的需求,随后开发团地准备开发下一个版本v2.0,当开发团队
在如火如荼的工作的时候,客户突然提出了在v1.0版本有一个bug,需要改进,而且必须把这个改进引入到v2.0版本中。用svn怎么样解决这个问题呢?
从上面可以看出,branches,tags,trunk已经被加入到仓库中了。
这样该项目的基本代码就加入到了trunk中。
经过以上几步,trunk中的目录就被导入到了oa中。
选择发布到tags目录
在tags下建立一个文件夹V1.0
在A.java类上稍微做一下修改即可。
对tags中的V1.0做分支,然后移动到branches中,为V1.0_fixup。
把路径切换到branches/V1.0_fixup。
因为版本库已经切换到了branches/V1.0_fixup,所以这个时候可以提交了。
选择branches中的版本做分支标记。
发布到稳定库中(tags),并且版本的名字为V1.1
在trunk版本中,选择合并。
从tags/V1.1中进行merge
1、 项目经理会发一个word文档
1、 svn的仓库的地址
2、 使用svn的用户名和密码
3、 把svn上的项目导入到myelicpse中
4、 做自己的模块,把自己写的东西上传到svn上
5、 版本的对比,合并版本
原文:https://www.cnblogs.com/biaogejiushibiao/p/9498818.html