SVN基础使用教程

本文内容适合SVN初学者,仅把自己学习笔记简要分享整理
本文内容学习整理自菜鸟教程SVN

SVN简介

Subversion(SVN)是一款开源的版本控制软件,所有数据放在一个版本库中(repository).SVN管理源代码时以行为单位,当源代码中每行不冲突时可以自动合并,否则需要人工修改。

SVN基本概念

版本库:版本库中存放了源代码以及修改历史。通过create创建版本库。
checkout:从版本库中checkout一份工作副本,进行工作修改后,可以重新提交回版本库。
update:用于同步版本库和本地工作副本。举例:多人工作使,有的员工提交了新代码至版本库,此时其他人需要update本地副本。
变更文件:在SVN中可以进行编辑、添加、删除、重命名文件的操作,这些操作会进入待更新列表,只有将这些变更操作提交至变更列表并commit后才有效。
复查变化:当update后,工作副本会与版本库一致,但是当个人修改后会有一些变化,所以commit之前最好检查自己修改了那些文件。status会显示所有修改过的文件,diff则可显示具体变更信息。
恢复变化:进行一番修改后,想要去除这些修改可以使用revert,其可以恢复文件或目录。
解决冲突:处理合并分支时发生的冲突。适应merge自动处理可以合并的,resolve则帮助用户找出冲突。
commit:提交变更列表中的内容到版本库中,其实一个原子操作。

SVN服务器端操作

创建版本库

创建版本库repo1和repo2

svnadmin create /home/svn/repo1
svnadmin create /home/svn/repo2

启动svnserver服务–subversion

svnserve -d -r 目录 --listen-port 端口号

指定路径时-r后可以为版本库路径(一个svnserve一个版本库)或是版本库的上级路径(多库svnserve)。
创建完成版本库后,需在版本库中配置svnserve.conf、passwd、authz文件,配置想换用户和权限。

  • svnserve.conf文件
[general]
anon-access = none #非鉴权用户的访问权限
auth-access = write #鉴权用户的访问权限
authz-db = /path/ #权限配置文件名
password-db = /path/ #用户口令文件
realm = tiku #版本库的认证域,即登录时的认证域名称
  • passwd文件
[users]
admin = admin # 用户名=口令
  • authz-db文件
    该文件由一个[groups]配置端和若干个版本库管理权限段组成
[groups] #用户组=用户1,用户2
g_admin = user1,user2

[admintools:/]
@g_admin = rw
* =

[test:/home/thinker]
thinker = rw
* = r

启动svnserver服务–Visual SVN

此处推荐Visual SVN教程
可视化的创建Repository、Users、Groups,并可使设置不同版本库的权限。

上述两种启动svnserver服务的方式,推荐第二种。

上述的操作都是在SVN服务器端进行,在实际工作中一般都是对已有的版本库checkout后然后修改,下面详细介绍这部分内容。

SVN 用户端操作

SVN checkout&update

  • 使用TortoiseSVN
    在目标文件夹,右键出现SVN checkout,然后填写库IP和用户信息。
  • 使用命令行
svn checkout IP RepoName --username=uname

svn update 则是从服务器取回罪行的数据。

SVN 提交文件

创建文件后,使用svn status可以查看当前工作副本的状态,?表示还未添加到版本控制中。当文件已经存在只是修改时,则会显示M

?   readme

添加到版本控制svn add readme后变为如下,A表示已经添加到版本控制中

A   readme

若出现误添加了不需要版本控制的文件在commit之前,可以如下操作

svn revert --recursive/-R folder

若要添加到版本控制中,则需要svn commit -m "描述",此时会提交到版本苦衷,并且版本号会加1。

SVN 查看信息

svn log

查看某些版本之间的信息

svn log -r 1:2

查看某些文件的历史信息

svn log filename

通过-v参数得到目录信息,通过-l N得到N条数据。

svn diff

  • svn diff 会显示当前副本与版本库之间的变化
  • svn diff -r revision num filename 会显示指定文件与指定版本库中的区别
  • svn diff -r 2:3 filename 会显示指定文件在不同版本之间的区别

svn cat

svn cat -r revision num filename 只显示过去版本的文件,不比较他们区别。

svn list

svn list IP在不下载文件到本地的情况下观察版本库中的文件。

SVN 版本回退

  • 回退单个文件svn revert filename
  • 回退整个目录svn revert -R/--recursive folder
  • 回退整个版本(针对已经提交commit的),该操作称为reverse merge svn merge -r 2:1 file。此时只是将某些文件回退到之前的版本,但是版本号会继续增加。

SVN 创建分支

创建和合并分支依靠svn copysvn merge实现,SVN创建分支的思路相比git更为简单,直接将当前文件复制到新文件夹内,然后使用merge进行合并。

SVN 标签

当开发进行到一个里程碑阶段,可以使用tag获得一个更有意义的名字。

发布了4 篇原创文章 · 获赞 0 · 访问量 116

猜你喜欢

转载自blog.csdn.net/u012921982/article/details/104015972
今日推荐