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. Scrum立会报告+燃尽图(Final阶段第七次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2486 项目地址:https://coding.net/u/wuyy694 ...

  2. 第五次Scrum meeting

    第五次Scrum meeting 会议内容: 连接方面:确定封装成json的文本格式,尽量在满足在线组和手机客户端两组的情况下,降低自身的难度 测试方面:进行新一轮测试,主要测试程序的稳定性和可靠性, ...

  3. 【Alpha】第九次Scrum meeting

    今日任务一览: 姓名 今日完成任务 所耗时间 刘乾 由于发现之前版本的模板引擎存在致命bug,所以重新更换,现在使用jinja2作为模板渲染引擎. 3 鲁聃 卤蛋今天为了给编译老师做视频,没有做软工项 ...

  4. Linux第一章第二章学习笔记

    第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...

  5. Linux内核分析——第二周学习笔记20135308

    第二周 操作系统是如何工作的 第一节 函数调用堆栈 存储程序计算机:是所有计算机基础的框架 堆栈:计算机中基础的部分,在计算机只有机器语言.汇编语言时,就有了堆栈.堆栈机制是高级语言可以运行的基础. ...

  6. KNY三人组对YiSmile小程序的项目总结

    设想和目标 1.我们的小程序要解决什么问题? 针对于本校学生,服务于本校学生.由于丢东西,找东西的事情每天都在上演,空间说说,朋友圈,官方QQ,信息比较冗杂,没有一个固定的平台来专门提供学生.此外,教 ...

  7. KindEditor:Ajax提交表单时获取不到HTML内容

    当用Ajax提交表单时,KindEditor的内容获取不到,HTML数据获取不了 原因:当ajax提交时,KindEdito的HTML数据还没有同步到表单中来,那怎么去获取HTML数据呢? ----- ...

  8. python 如何写CMD命令工具

    #-*- coding: UTF- -*- import argparse import sys: sys.argv.append('--help') parser = argparse.Argume ...

  9. 2007-10的PWX OracleCdc问题解答

    1. 捕获增量的底层机制是什么?(例如日志.触发器.LogMiner) PWX利用Oracle的LogMiner来提取来自于Oracle的增量, LogMiner是由Oracle数据库提供的,如果当前 ...

  10. 深入理解ajax系列第二篇——请求方式

    前面的话 在上一篇中,概要地介绍了XHR对象的使用.本文将详细介绍使用XHR对象发送请求的两种方式——GET和POST.下面将以实例的形式来详细说明 GET GET是最常见的请求类型,最常用于向服务器 ...