svn版本控制

下载Setup-Subversion-1.7.6.msi
地址为:http://sourceforge.net/projects/win32svn/files/latest/download


下载安装文件
地址为:http://tortoisesvn.net/downloads.html






1  安装
   Setup-Subversion-1.7.6.msi
   ortoiseSVN-1.7.10.23359-win32-svn-1.7.7.msi
   svn -version查看当前版本
2 subversion 安装成功后, 修改环境变量 path中添加E:\software\TortoiseSVN\bin


3 在启动svn前需要先建立一个文档仓库

新建目录E:\software\repository\svn
我们使用svn服务器端命令 svnadmin建立 如下:


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




4  文档仓库建好后,我们进行subversion启动

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

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


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

netstat -an 


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




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


sc create SVN-Service binpath= "E:\software\Subversion\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权限控制


第一步  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 按用户指定权限
* =  其他用户








将项目添加到版本库中
在项目文件夹上“右键 -> TortoiseSVN -> Import...” ,在弹出对话框的“URL of repository”


输入“svn://localhost/yue/文件名”。在“Import message”输入注释。




























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



posted @ 2012-09-05 11:26  retacn_yue  阅读(254)  评论(0编辑  收藏  举报