svn版本控制

1》 双击执行 Setup-Subversion-1.6.5.msi


详见:SVN安装界面文档


2》 subversion 安装成功后,在启动svn前需要先建立一个文档仓库

我们使用svn服务器端命令 svnadmin建立 如下:


svnadmin create E:\software\repository\svn\yue


3》 建立好文档仓库后,我们进行subversion启动

第一种方式:命令行启动,我们使用服务器端命令 svnserve 如下:

svnserve -d -r E:\software\repository\svn\yue


启动后我们如何知道svn启动成功呢? 我们查看端口使用情况:

netstat -an


我们看到3690端口服务,说明启动成功




第二种方式:安装svn后配置windows自动启动服务


sc create SVN-Service binpath= "E:\software\svn\bin\svnserve.exe --service -r E:\software\repository\svn" displayname= "SVN-Service" start= auto depend= Tcpip


binpath 指定svnserve 的路径和命令
start= auto 表示服务自动启动。注意:等于号的左边无空格,而右边必须有一个空格
Displayname、start、depend
在此命令中-r(--root)项目版本仓库的根目录,如果是建单仓库则要指定仓库名



启动服务


net start SVN-Service





查看服务是否添加成功,可以选择windows 控制面板--》》管理工具--》》服务 会发现列表中有SVN-service服务


sc delete SVN-Service


5》svn 命令介绍

将项目检出 至user目录下:svn checkout URL [PATH]

svn checkout svn://localhost/yue/ E:\develop\workroom\user


svn checkout svn://localhost/yue/ E:\develop\workroom\user2


输出内容:




###########################################
# A user\*.* #
# ....... #
# 取出版本1 #
###########################################




将改动的文件提交至版本库:svn commit -m "log des" PATH


我们修改user文档中的user.java文件,修改一些内容,然后提交至版本库:


svn commit -m "this is the first commit " E:\develop\workroom\user\user.java
(如果当前目录已为user, 则只需svn commit -m "this is the first commit " user.java)
输出内容:


###########################################
# 正在发送 user.java #
# 传输文件数据 #
# 提交后的版本为2 #
###########################################



更新你的工作拷贝 : svn update [PATH...]


我们将 user.java 更改后的内容更新至 user2目录


进入user2目录
cd E:\develop\workroom\user2
svn update

svn update E:\develop\workroom\user2

输入内容如下:
###########################################
# U E:\develop\workroom\user2 #
# #
# 更新到版本2 #
###########################################
注意:更新要经常频繁的做,尽量让问题及早暴露,便于处理
提交代码前要更新,否则容易产生版本冲突




向版本库中添加一个新文件:svn add PATH...


我们在user中建立一个新文件user.java, 然后添加到版本库中:


svn add E:\develop\workroom\user\user.java


输入内容:
###########################################
# A user.java.java #
# #
###########################################



Ok,添加后我们将新文件更新至user2目录中:
进入user2目录
cd E:\develop\workroom\user2\


svn update E:\develop\workroom\user2


输出内容:
###########################################
# 版本2 #
# #
###########################################
但是并没有更新user.java下来。


添加到版本库,文件并没有提交,因此我们需要提交:


svn commit -m "this is the usert class" F:\develop\workroom\user\UserT.java


输出内容:
###########################################
# 添加user.java #
# 传输文件数据。 #
# 提交后的版本为3 #
###########################################




OK,我们对user2再次更新:
svn update E:\develop\workroom\user2


输出内容:
##############################################
# A E:\develop\workroom\user\user.java #
# #
# 更新到版本3 #
##############################################




从版本库中删除一个文件:svn delete PATH...


假如我们要删除user下的UserT.java文件:

svn delete E:\develop\workroom\user2\user.java


输出内容:
##############################################
# D E:\develop\workroom\user\user.java #
# #
# #
##############################################


但注意的是svn delete 不会立即从版本库删除,而是会在下次提交删除。

svn commit -m "delete this class" F:\develop\workroom\user\user.java




从版本库中删除一个文件,再取消删除操作:svn revert PATH...


假如我们要删除user.java
svn delete user.java


输出内容:
#####################################################
# D E:\develop\workroom\user\user.java #
# #
# #
#####################################################


但这个时候我们又不想删除了,我们可以:


svn revert user.java
输出内容:
#####################################################
# 已恢复 user.java #
# #
# #
#####################################################


显示本地或远程条目的信息 svn info


我们显示出 本地user 目录的信息


首先进入我们的workroom 目录


svn info user




显示版本库中的条目 svn list

我们显示出版本库中yue 的条目


svn list svn://localhost/yue


查看当前工作区状态 svn status


我们进入工作区目录 即 user目录

svn status


系统会列出需要添加,删除或者更新的文件
一般来说有如下几种开头
A添加
D删除
U更新
C冲突
G合并




获取帮助信息: svn help ...


假如我们想查看svn 客户端命令中的 checkout 的使用方法


svn help checkout




获取 add 命令的帮助信息: svn help


svn help add 等同于 svn add --help




6》svn权限控制


第一步 E:\software\repository\svn\yue\conf\svnserve.conf
anon-access = none
auth-access = write
password-db = passwd




anon-access
指明仓库匿名用户访问的权限,可选值(none:不能访问;read:匿名可读;write:匿
名可写),一般设置为none,避免匿名访问,出非你的项目为开源项目。
auth-access
指明被授权通过的用户的权限,可选值同上。
password-db
指定了被授权用户的用户名及密码的文件,可以在passwd 文件中设置用户名与密码。
authz-db
实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限,在
Subversion 1.3 之后,svnserve 和Apache 一样都可以使用“authz-db”文件


第二步 E:\software\repository\svn\yue\conf\passwd
passwd
默认在[users]下有两个被注释了的用户信息,可通过去掉注释或自
己增加一行用户信息。例如:
yue = yue (前面是用户名,后面是密码)


第三步 E:\software\repository\svn\yue\conf\authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
yue = yue


[yue:/] 指明仓库
@yue = rw 按组指定权限
zhenhua = rw 按用户指定权限
* = 其他用户

你可能感兴趣的:(版本控制)