SVN命令参考:   https://www.cnblogs.com/wlsxmhz/p/5775393.html

svn的存储结构一般建议在根目录下建立trunk、branches、tags这三个文件夹,trunk用于平时的正常工作,branches用于存放各种分支,tags用于存放各种发布版本或某状态的快照

tags本质上和branches是一样的,都是一种分支,只是习惯上branches下面的东西会被修改、合并,而tags下面的东西则作为某阶段的状态保存不动

一般tags下面经常放的都是各个发布版本,如Release0.91、Release1.23等

1首先明白我们采用命令行的方式在服务器上创建的仓库是没有trunk、branches、tags目录的。

在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录。这样在trunk中开始进行开发

trunk是主分支,是日常开发进行的地方。

branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。

tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。

2.从创建一个服务器仓库开始建立分支

1.服务器端创建一个仓库

[root@VM_0_12_centos repository]# svnadmin create ./danger  #创建仓库
[root@VM_0_12_centos repository]# ls ./danger/        #查看目录结构
conf db format hooks locks README.txt

2.服务器端修改配置文件,配置账户密码以及权限(修改conf目录下的三个文件:)

authz:负责账号权限的管理,控制账号是否读写权限

passwd:负责账号和密码的用户名单管理

svnserve.conf:svn服务器配置文件

authz文件在最后添加用户的权限,r代表读权限,w代表写权限:

passwd文件中追加账号和密码,如下

账号密码文件无需做修改,也是直接将账号和密码信息追加到文件中即可,注意格式为:

账号 = 密码

例如:admin = 123456

修改svnserve.conf(重要),只需要放开下面四处的注释即可。

3.客户端检出仓库并且创建trunk、tags、branches目录:

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject
$ svn co svn://qiaoliqiang.cn:3690/danger  #检出项目,等价于svn checkout url
Checked out revision . Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject
$ ls
danger/

创建三个目录并且提交到SVN服务器:

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject
$ cd danger/ Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ ls Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ mkdir trunk branches tags      #创建三个目录 Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ ls
branches/ tags/ trunk/
Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn add *      #添加到索引库
A branches
A tags
A trunk Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn ci -m "add 3 dirs"  #提交到远程仓库,等价于svn commit -m "xxx"
Adding branches
Adding tags
Adding trunk Committed revision .

4.我们进入trunk目录模拟在trunk正常开发并且提交到服务器:

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn diff      #查看修改的不同
Index: trunk/myProject/test.txt
===================================================================
--- trunk/myProject/test.txt (revision )
+++ trunk/myProject/test.txt (working copy)
@@ -, + @@
+ Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn ci -m "add a file"      #提交到服务器
Adding trunk\myProject
Adding trunk\myProject\test.txt
Transmitting file data .
Committed revision .

5.我们创建一个分支并且切换到新分支:

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn cp svn://qiaoliqiang.cn:3690/danger/trunk svn://qiaoliqiang.cn:3690/danger/branches/qlqbranch -m "add qlqbranch"  #创建分支 Committed revision .

svn cp 等价于  svn copy

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/branches/qlqbranch
svn: E195012: Path '.' does not share common version control ancestry with the requested switch location. Use --ignore-ancestry to disable this check.
svn: E195012: 'svn://qiaoliqiang.cn/danger/branches/qlqbranch' shares no common ancestry with 'C:\Users\Administrator\Desktop\svnproject\danger' Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/branches/qlqbranch --ignore-ancestry  #切换分支到qlqbranch
D tags
D trunk
D branches
A myProject
A myProject\test.txt
Updated to revision . Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ ls
myProject/

当然我们可以切换到主干分支

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/trunk --ignore-ancestry #回到主干分支

我们可以通过svn info查看我们目前处于哪个分支

$ svn info    #根据url判断目前处于哪个分支
Path: .
Working Copy Root Path: C:\Users\Administrator\Desktop\svnproject\danger
URL: svn://qiaoliqiang.cn/danger/branches/qlqbranch  
Relative URL: ^/branches/qlqbranch
Repository Root: svn://qiaoliqiang.cn/danger
Repository UUID: 5fd66061-fba7-44bc-bfef-b078c6e4d2c6
Revision:
Node Kind: directory
Schedule: normal
Last Changed Author: qiaolq
Last Changed Rev:
Last Changed Date: -- :: + (▒▒▒▒, ▒▒ )

6.在新建的分支修改文件

新建的分支修改文件并且提交

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn diff
Index: myProject/test.txt
===================================================================
--- myProject/test.txt (revision )
+++ myProject/test.txt (working copy)
@@ - +, @@ +
+
+
+
+
+ Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn ci -m "qlqbranch modify test.txt"
Sending myProject\test.txt
Transmitting file data .
Committed revision .

切换到主分支查看文件是否是修改之前的文件:

Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/trunk --ignore-ancestry  #切换到主干分支
U myProject\test.txt
Updated to revision . Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ cat ./myProject/test.txt      #读取文件 Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/branches/qlqbranch --ignore-ancestry  #切换到qlqbranch分支
U myProject\test.txt
Updated to revision . Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger      #读取文件
$ cat ./myProject/test.txt

7. 合并qlqbranch到主干trunk分支

  • 切换到主干分支并查看是否切换成功
Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/trunk --ignore-ancestry #切换分支
At revision .
$ svn info  #唯一有用的是url,根据url判断是否切换成功
Path: .
Working Copy Root Path: C:\Users\Administrator\Desktop\svnproject\danger
URL: svn://qiaoliqiang.cn/danger/trunk
Relative URL: ^/trunk
Repository Root: svn://qiaoliqiang.cn/danger
Repository UUID: 5fd66061-fba7-44bc-bfef-b078c6e4d2c6
Revision:
Node Kind: directory
Schedule: normal
Last Changed Author: qiaolq
Last Changed Rev:
Last Changed Date: -- :: + (▒▒▒▒, ▒▒ )
  • 查看创建分支时候的版本号(r3代表创建分支的时候版本号是3,所以合并的时候以3作为旧版本合并)
Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn log --verbose --stop-on-copy | tail -
M /branches/qlqbranch/myProject/test.txt qlqbranch modify test.txt
------------------------------------------------------------------------
r3 | qiaolq | -- :: + (▒▒▒▒, ▒▒ ) | line
Changed paths:
A /branches/qlqbranch (from /trunk:) add qlqbranch
  • 合并qlqbranch分支到主干分支
Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn merge -r : svn://qiaoliqiang.cn/danger/branches/qlqbranch #合并分支,svn merge oldver:newver oldurl

8.发布一个tag(也是copy)

  • 发布tag
Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn copy svn://qiaoliqiang.cn:3690/danger/trunk svn://qiaoliqiang.cn:3690/danger/tags/release-1.0 -m "1.0released" Committed revision .
  • 切换到tag查看
Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn switch svn://qiaoliqiang.cn:3690/danger/tags/release-1.0 --ignore-ancestry #切换分支到tag
U myProject\test.txt
Updated to revision . Administrator@MicroWin10- MINGW64 ~/Desktop/svnproject/danger
$ svn info      #查看版本以及信息
Path: .
Working Copy Root Path: C:\Users\Administrator\Desktop\svnproject\danger
URL: svn://qiaoliqiang.cn/danger/tags/release-1.0
Relative URL: ^/tags/release-1.0
Repository Root: svn://qiaoliqiang.cn/danger
Repository UUID: 5fd66061-fba7-44bc-bfef-b078c6e4d2c6
Revision:
Node Kind: directory
Schedule: normal
Last Changed Author: qiaolq
Last Changed Rev:
Last Changed Date: -- :: + (▒▒▒▒, ▒▒ )

【SVN】SVN的trunk、branches、tag的使用以及分支的概念的更多相关文章

  1. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  2. SVN中的Trunk、Tag、Brance的用法

    在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆.在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag, ...

  3. SVN配置管理(trunk、branches、tags)

    利用SVN的分支,合理地管理项目代码 由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式. trunk是主分支,是 ...

  4. [转]SVN的trunk branch tag

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...

  5. SVN中trunk,branches,tags用法详解

    原文地址:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion有一个很标准的目录结构,是这样的.比如项 ...

  6. SVN标准开发布局目录,trunk,branches,tags用法详解

    http://www.cnblogs.com/newstar/archive/2011/01/04/svn.html 关于 SVN 目录结构       Subversion有一个很标准的目录结构,是 ...

  7. SVN中trunk,branches,tags用法详解(转载)

    转载出处:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion是一个自由开源的版本控制系统.在Subv ...

  8. SVN中trunk,branches,tags用法详解【转】

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...

  9. SVN中trunk,branches,tags用法详解[重要]

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...

随机推荐

  1. No.1110_第十一次团队会议

    今天项目进展很多,第一轮迭代基本已经完成了,但是产品还没有发布,主要是因为大家还是太困了,所以再等一等明天再发布吧. 现在队员们急需补觉,因为最近实在是太辛苦了,很多人都没有休息好.现在已经基本完成了 ...

  2. java实验报告五

    一.实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 二.实验基础: IP和端口:IP是用来标示计算机,而端口是用来标示某个计算机上面的特定应用.至于它们的 ...

  3. Linux第六周学习总结——进程额管理和进程的创建

    Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/cour ...

  4. 安装VS2013

       安装VS2013, 之前就有VS2010,安装了一个多小时,纠结,下面是截图.   1.安装   2.登录,之前就有账号了       3.这就是VS2013了.     4.测试     5通 ...

  5. centos 7 安装截图软件shutter

    1.解决 epel-release依赖问题 ,执行命令: yum insatll epel-release 2.然后下载nux-dextop-release-0-5.el7.nux.noarch.rp ...

  6. Java Servlet开发的轻量级MVC框架最佳实践

    在Servlet开发的工程实践中,为了减少过多的业务Servlet编写,会采用构建公共Servlet的方式,通过反射来搭建轻量级的MVC框架,从而加快应用开发. 关于Servlet开发的基础知识,请看 ...

  7. 5G的作业- 云计算

    作业命题:5G对于保险行业的影响,技术层面和业务模式层面 一.5G网络的特点: 5G网络主要有三大特点,极高的速率 enhanced mobile broadband (eMBB),极大的容量 Mas ...

  8. codeforces71A

    Way Too Long Words CodeForces - 71A XUPT_ACM的杨队是一个强迫症晚期的大神,他特别反感长单词,就像 "localization" 和&qu ...

  9. C# 汉字排序

    转载:http://blog.csdn.net/lgx040605112/article/details/6042316 using System; using System.Globalizatio ...

  10. fgt2eth Script

    fgt2eth Script explanation_on_how_to_packet_capture_for_only_certain_TCP_flags_v2.txt Packet capture ...