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. Daily Scrumming* 2015.12.8(Day 1)

    一.团队scrum meeting照片 二.今日总结 姓名 WorkItem ID 工作内容 签入链接以及备注说明  江昊 任务942 学习使用github,在github上建立组织并将所有队员纳入, ...

  2. HTML5遇到的问题

    一.Uncaught SyntaxError: Unexpected identifier 解决办法: Uncaught SyntaxError: Unexpected identifier这个问题, ...

  3. 剑指offer:二叉树的深度

    题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 解题思路: 这道题也是递归的思路,比较简单. 做的过程中遇到的一个 ...

  4. java调用不了你本以为有的方法的问题

    大部分是因为你的jar版本不对引起的,我就试过

  5. An ''all'' model group must appear in a particle with...问题解决记录

    场景: 最近在一个新项目的依赖包调整过程中,引入包之后,发现项目启动报错,一直启动不成功,经过查询和排查,发现是包对xml解析冲突的问题: 报错信息: [WARNING] Nested in org. ...

  6. 简单封装DBUtils 和 pymysql 并实现简单的逆向工程生成class 类的py文件

    这里使用的 Python 版本是:Python 3.6.0b2. 涉及的三方库:DBUtils.pymysql 1.ConfigurationParser 通过调用Python内置的 xml.dom. ...

  7. XShell中文乱码问题解决

    现象:XShell终端中输入中文显示乱码 原因:XShell终端的编码格式与服务器不同 解决:修改XShell终端的编码格式:菜单中点击,文件->属性->终端->编码,选择“UTF- ...

  8. java虚拟机的内存划分

    为了提高运算效率,就对空间进行不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式. 一. 1.jvm的内存划分: 区域名称 作用 寄存器 给cpu使用,和我们开发无关 本地方法栈 jv ...

  9. 自学Aruba1.2-WLAN一些基本常识802.11n速率计算方式、802.11n及802.11AC速率表

    点击返回:自学Aruba之路 自学Aruba1.2-WLAN一些基本常识802.11n速率计算方式.802.11n及802.11AC速率表 1. 802.11n速率计算方式 以802.11g的54M最 ...

  10. 【洛谷P1491】集合位置

    题目大意:求给定的一张无向带权图的次短路. 题解:先跑一遍 spfa 求出从起点到终点的最短路,记录路径.接着枚举删边,并重新跑 spfa,统计最小值即可. 至于为什么 dp 做法不行,暂时还不清楚. ...