【SVN】SVN的trunk、branches、tag的使用以及分支的概念
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的使用以及分支的概念的更多相关文章
- SVN组成中trunk,branches and tags功能用法详解
SVN组成中trunk,branches and tags功能用法详解 我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...
- SVN中的Trunk、Tag、Brance的用法
在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆.在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag, ...
- SVN配置管理(trunk、branches、tags)
利用SVN的分支,合理地管理项目代码 由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式. trunk是主分支,是 ...
- [转]SVN的trunk branch tag
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
- SVN中trunk,branches,tags用法详解
原文地址:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion有一个很标准的目录结构,是这样的.比如项 ...
- SVN标准开发布局目录,trunk,branches,tags用法详解
http://www.cnblogs.com/newstar/archive/2011/01/04/svn.html 关于 SVN 目录结构 Subversion有一个很标准的目录结构,是 ...
- SVN中trunk,branches,tags用法详解(转载)
转载出处:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion是一个自由开源的版本控制系统.在Subv ...
- SVN中trunk,branches,tags用法详解【转】
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
- SVN中trunk,branches,tags用法详解[重要]
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
随机推荐
- Scrum立会报告+燃尽图(Final阶段第七次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2486 项目地址:https://coding.net/u/wuyy694 ...
- 第五次Scrum meeting
第五次Scrum meeting 会议内容: 连接方面:确定封装成json的文本格式,尽量在满足在线组和手机客户端两组的情况下,降低自身的难度 测试方面:进行新一轮测试,主要测试程序的稳定性和可靠性, ...
- 【Alpha】第九次Scrum meeting
今日任务一览: 姓名 今日完成任务 所耗时间 刘乾 由于发现之前版本的模板引擎存在致命bug,所以重新更换,现在使用jinja2作为模板渲染引擎. 3 鲁聃 卤蛋今天为了给编译老师做视频,没有做软工项 ...
- Linux第一章第二章学习笔记
第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...
- Linux内核分析——第二周学习笔记20135308
第二周 操作系统是如何工作的 第一节 函数调用堆栈 存储程序计算机:是所有计算机基础的框架 堆栈:计算机中基础的部分,在计算机只有机器语言.汇编语言时,就有了堆栈.堆栈机制是高级语言可以运行的基础. ...
- KNY三人组对YiSmile小程序的项目总结
设想和目标 1.我们的小程序要解决什么问题? 针对于本校学生,服务于本校学生.由于丢东西,找东西的事情每天都在上演,空间说说,朋友圈,官方QQ,信息比较冗杂,没有一个固定的平台来专门提供学生.此外,教 ...
- KindEditor:Ajax提交表单时获取不到HTML内容
当用Ajax提交表单时,KindEditor的内容获取不到,HTML数据获取不了 原因:当ajax提交时,KindEdito的HTML数据还没有同步到表单中来,那怎么去获取HTML数据呢? ----- ...
- python 如何写CMD命令工具
#-*- coding: UTF- -*- import argparse import sys: sys.argv.append('--help') parser = argparse.Argume ...
- 2007-10的PWX OracleCdc问题解答
1. 捕获增量的底层机制是什么?(例如日志.触发器.LogMiner) PWX利用Oracle的LogMiner来提取来自于Oracle的增量, LogMiner是由Oracle数据库提供的,如果当前 ...
- 深入理解ajax系列第二篇——请求方式
前面的话 在上一篇中,概要地介绍了XHR对象的使用.本文将详细介绍使用XHR对象发送请求的两种方式——GET和POST.下面将以实例的形式来详细说明 GET GET是最常见的请求类型,最常用于向服务器 ...