SVN介绍+安装+配置+命令行操作

来源:互联网 发布:淘宝达人的个人简介 编辑:程序博客网 时间:2024/06/07 12:41

一:介绍

Subversion就是一款实现版本控制的工具软件,通常也称为版本控制器,简称SVN。Subversion是Apache软件基金会组织下的一个项目。SVN可以帮助我们在开发中完成以下目的。下面先简要介绍一下版本控制的功能:

  1. 备份–编写的代码上传到服务器保存
  2. 代码还原–本地代码遗失可以从服务器中checkout下来
  3. 协同修改–对于有冲突的代码可以商量
  4. 多版本项目文件管理–很多文件统一管理
  5. 追溯问题代码的编辑人和编辑时间(主要是为了更好的解决问题,不是推卸责任哦,我们要对自己的代码负责)
  6. 权限控制–不同的开发人员对于代码的读写权限不一致

SVN工作原理

SVN基本操作:

1:检出,也就是通俗意义上的下载,一般只是开发开始执行一次即可2:更新,将本地文件和服务器端文件保持一致3:提交,将每次的工作代码提交到服务器,通常在完成一个功能模块时进行

二:SVN安装

1:直接下载
http://sourceforge.net/projects/win32svn/files/latest/download
然后安装 Setup-Subversion-1.8.9-1.msi

  • 安装目录是非中文无空格目录
  • 安装程序会自动配置Path环境变量

在命令行输入:svn –version,如果看到相关版本信息则安装成功

三:配置版本库

1:说明:

在版本库根目录下创建与具体项目对应的子目录——这样做的目的是使一个SVN服务器能够同时管理多个项目,而不是为每一个项目搭建一个SVN服务器——这显然太浪费资源了。例如:D:\DevRepository\Subversion\CRM    D:\DevRepository\Subversion\ERP    D:\DevRepository\Subversion\OA

2:配置的方式:

2.1:一个版本库 对应 多个项目(会产生断层,即某个项目开始版本不是1,可能是100甚至10000等)2.2:一个版本库 对应 一个项目(推荐使用)
#创建版本库命令命令格式主命令     子命令    参数1svnadmin    create     仓库路径举例  svnadmin create D:\DevRepository\Subversion\StuSys

3:版本库说明
版本库说明

4:启动服务器程序
4.1 第一种方式

主命令 参数1 参数2 参数3svnserve    -d表示后台执行    -r表示版本库根目录  D:\DevRepository\Subversion举例  svnserve -d -r D:\DevRepository\Subversion

4.2 第二种方式

注册Windows服务[1]SVN服务端程序注册为Windows服务,就可以让SVN服务随系统一起启动,克服了命令行方式的不足。[2]注册Windows服务需要利用XP、2000以上系统自带工具Service Control,执行文件是sc.exe,注意这个命令不是SVN的命令。

注册服务成功后即可在服务中心启动服务即可
服务开启停止删除

四:使用命令行模式访问服务器

**1:检出**svn checkout svn://SVN服务器主机地址/具体仓库目录 保存检出内容的目录svn checkout svn://localhost/ERP MyERP取出版本 0。简答的理解就是加入项目后下载服务器最新的项目版本到本地
**2:提交**提交简易流程分析:进入D:\DevWorkSpace\SVNSpace\MyERP目录创建一个文件test.txtD:\DevWorkSpace\SVNSpace\MyERP>svn commit -m "My first commit"  test.txtsvn: E170001: 提交失败(细节如下):svn: E170001: 认证失败原因是没有权限:暂时先开启匿名访问权限[1]进入对应的版本库目录下的conf目录:D:\DevRepository\Subversion\ERP\conf[2]打开svnserve.conf[3]# anon-access = read改为anon-access = write,也就是去掉“# ”,将read改为write。注意前面不要留空格,一定要顶格写。[4]不需要重启SVN服务,甚至命令行窗口都不需要重新打开。重新执行提交命令D:\DevWorkSpace\SVNSpace\MyERP>svn commit -m "My first commit"  test.txt正在增加       test.txt传输文件数据.提交后的版本为 1。其实svn commit命令最后可以不指定具体文件,此时表示提交当前工作副本中的所有修改
**3:更新**    更新很简单下面简述一下    1:比如小王在当前工区区间修改了文件,然后提交,此时服务器上的文件和小王的文件理论上应该保持一致(如果没有版本冲突的话)####版本冲突:简单地说就是项目中的其他成员同时修改了同一份文件,此时有一个人提交了,另外一个人再提交就会提示文件过时,此时需要 手工 解决版本冲突后再进行操作*    2:此时小李参加了这项工作,首先他要checkout服务器的项目到本地,然后完成工作并提交。    3:第二天,小王回来工作。此时小王的项目显然不再是服务器中最新的项目了,所以他需要update一下项目使他的本地项目和服务器保持一致。从这个过程中我们可以看出更新其实和检出有些类似,不同之处在于    a: checkout是下载服务器的文件到本地,update也是这个操作,不同之处在于重点是对更改的文件的进行下载到本地。    b: update一般会在每次开始工作时执行,而checkout则是在参加项目时执行一次即可

注意:提交过程中可能会出现最常见的问题–冲突!!!
规避冲突的一个有效方法就是首先update之后再进行提交。
关于冲突
冲突

五:版本库配置文件相关

none表示不允许匿名用户访问 write表示读写 read表示只读anon-access = none  匿名访问auth-access = write 授权访问password-db = passwd 密码authz-db = authz 用户

多版本库共享配置设置
多版本共存设置

其他CMD命令

1:使用svn info查看工作副本信息2:对于某一个文件使用svn info查看工作副本信息3:使用svn log命令查看目录或文件日志信息[注意:使用这个命令的前提是设置匿名访问为none,即:anon-access = none,否则会出现“svn: E220001: 条目不可读”错误]
0 0
原创粉丝点击