SVN版本管理工具入门教程(二)

简介: SVN版本管理工具入门教程(二)

6.SVN提交操作


  • 在版本库中增加一个readme的说明文件:
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# cat readme
this is SVN tutorial.
  • 查看工作副本的状态
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# svn status
?       readme # ?说明它还未加到版本控制中
  • 将文件readme加到版本控制,等待提交到版本库
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# svn add readme
A         readme
  • 查看工作副本的状态
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# svn status
A       readme # A意味着这个文件已经被成功地添加到了版本控制中
  • 为了把readme存储到版本库中,使用commit -m加上注释信息来提交:
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# svn commit -m "SVN readme."
Adding         readme
Transmitting file data .
Committed revision 8.
svn commit -m "SVN readme."


7.SVN版本回退


  • 当我们想放弃对文件的修改,可以使用 SVN revert 命令。svn revert操作将撤销任何文件或目录里的局部更改
  • 对文件readme文件进行修改(readme文件还没有被提交),查看文件状态:
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# svn status
M         readme   # M表示readme文件已经被修改
  • 但是,发现修改readme文件出现错误,要撤销修改,通过svn revert命令将文件readme回退到未修改状态:
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk$# svn revert readme
Reverted 'readme'
  • revert操作不单单可以使单个文件恢复原状, 而且可以使整个目录恢复原状。恢复目录用-R命令:
svn revert -R trunk
  • 如何恢复一个已经提交的版本?为了消除一个旧版本,必须撤销旧版本里的所有更改然后提交一个新版本。首先,找到仓库的当前版本,假设现在是版本22,我们要撤销回之前的版本,比如版本21。
svn merge -r 22:21 readme


8.SVN查看历史信息


  • svn log: 显示svn的版本作者、日期、路径等信息
  • 如果只希望查看特定的某两个版本之间的信息,可以使用:svn log -r 6:8
  • 如果只想查看某个文件的版本修改信息,可以使用:svn log 文件路径
  • 如果希望得到目录的信息要加 -v如果希望显示限定N条记录的目录信息:svn log -l N -v


  • svn diff: 显示特定修改的行的详细信息
  • 如果用svn diff,不带任何参数,它将会比较你的工作文件与缓存在.svn的"原始"拷贝
  • 比较你工作拷贝和版本库中版本号为3的文件rule.txt: svn diff -r rule.txt
  • 比较 svn 工作版本中版本号2和3的这个文件的变化:svn diff -r 2:3 rule.txt


  • svn cat:将特定版本的某个文件内容显示在屏幕上
  • 如果只是希望检查一个过去版本,不希望查看它们的区别: svn cat -r 版本号 rule.txt


  • svn list:可以在不下载文件到本地目录的情况下来查看目录中的文件


9.SVN分支


  • 应用场景:当有人希望开发过程分开成两条不同的路线时,此时使用分支。比如项目下有两个小组,svn下有一个trunk版本。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作(某个模块),小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版(主干线)的一个copy版,不过分支也是具有版本控制功能的,而且是和主干线相互独立的,当然,最后我们可以通过(合并)功能,将分支合并到trunk上来,从而最后合并为一个项目。


  • 本地副本中创建my_branch分支
root@cdl-Inspiron-5421:~/svn/CurryCoder01# svn copy branches/my_branch
  • 查看状态
root@cdl-Inspiron-5421:~/svn/CurryCoder01# svn status
A +   branches/my_branch
A +   branches/my_branch/HelloWorld.html
A +   branches/my_branch/readme
  • 提交新增的分支到版本库中:
root@cdl-Inspiron-5421:~/svn/CurryCoder01# svn commit -m "add my_branch"
Adding         branches/my_branch
Replacing     branches/my_branch/HelloWorld.html
Adding         branches/my_branch/readme
Committed revision 9.
  • 切换到分支路径并创建index.html文件
root@cdl-Inspiron-5421:~/svn/CurryCoder01# cd branches/my_branch/
root@cdl-Inspiron-5421:~/svn/CurryCoder01/branches/my_branch# ls
HelloWorld.html index.html readme
  • 将index.html加入版本控制,并提交到版本库中:
root@cdl-Inspiron-5421:~/svn/CurryCoder01/branches/my_branch# svn status
?       index.html
root@cdl-Inspiron-5421:~/svn/CurryCoder01/branches/my_branch# svn add index.html
A         index.html
root@cdl-Inspiron-5421:~/svn/CurryCoder01/branches/my_branch# svn commit -m "add index.html"
Adding         index.html
Transmitting file data .
Committed revision 10.
  • 切换到trunk主分支,执行svn update,然后将my_branch分支合并到trunk主分支中
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk# svn merge ../branches/my_branch/
--- Merging r10 into '.':
A   index.html
--- Recording mergeinfo for merge of r10 into '.':
G   .
  • 将合并好的trunk主分支提交到版本库中
root@cdl-Inspiron-5421:~/svn/CurryCoder01/trunk# svn commit -m "add index.html"
Adding         index.html
Transmitting file data .
Committed revision 11.


10.SVN标签


  • 版本管理系统支持tag选项,通过使用tag的概念,可以给某一个具体版本的代码一个更加有意义的名字。
  • 在本地工作副本创建一个tag:
root@cdl-Inspiron-5421:~/svn/CurryCoder01# svn copy trunk/ tags/v1.0
A         tags/v1.0
  • 上面的代码成功完成,新的目录将会被创建在tags目录下:
root@cdl-Inspiron-5421:~/svn/CurryCoder01# ls tags/
v1.0
root@cdl-Inspiron-5421:~/svn/CurryCoder01# ls tags/v1.0/
HelloWorld.html readme
  • 查看状态:
root@cdl-Inspiron-5421:~/svn/CurryCoder01# svn status
A +   tags/v1.0
  • 提交tag内容:
root@cdl-Inspiron-5421:~/svn/CurryCoder01# svn commit -m "tags v1.0"
Adding         tags/v1.0
Transmitting file data ..
Committed revision 14.


相关文章
|
存储 安全 开发工具
版本管理工具git 与 svn 的区别具体有哪些?
版本管理工具git 与 svn 的区别具体有哪些?
168 0
|
Ubuntu 程序员 Linux
SVN版本管理工具入门教程(一)
SVN版本管理工具入门教程(一)
554 0
SVN版本管理工具入门教程(一)
SVN版本管理工具的使用
一、svn下载 https://tortoisesvn.net/downloads.html 下载网站 http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.
1137 0
|
8月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SVN服务器搭建教程】
现在,你已经成功在Ubuntu系统上搭建了SVN服务器。其他用户可以通过SVN客户端连接到你的SVN服务器,进行代码版本管理和协作开发。注意,为了安全起见,建议配置SSL加密以保护数据传输。
90 1
|
8月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
247 0
|
IDE Linux 开发工具
从旧服务器迁移svn到另一台新服务器中(linux系统)|遇到诸多坑,已解决
从旧服务器迁移svn到另一台新服务器中(linux系统)|遇到诸多坑,已解决
|
8月前
|
Apache 项目管理 数据安全/隐私保护
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器
139 0
|
3月前
|
Linux 数据安全/隐私保护 Windows
centos 7.2 搭建svn服务器
centos 7.2 搭建svn服务器
77 0
|
5月前
|
Android开发
svn服务器配置常见问题
svn服务器配置常见问题
72 1