收藏 分销(赏)

SVN实验基础手册专业资料.doc

上传人:w****g 文档编号:3023173 上传时间:2024-06-13 格式:DOC 页数:17 大小:33.54KB 下载积分:8 金币
下载 相关 举报
SVN实验基础手册专业资料.doc_第1页
第1页 / 共17页
SVN实验基础手册专业资料.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
svn实验手册 kingkongmao@龙梦 .5.23 本实验手册使用一种本地代码库操练寻常svn使用流程,访问本地库不必顾客验证 目录 1.准备:建立版本库(repos)和本地工作拷贝(working copy) 2.本地更改与提交 3.查看历史 4.分支与合并 1.准备:建立版本库(repos)和本地工作拷贝(working copy) 1)建立本地版本库 mkdir ~/expe cd ~/expe svnadmin create repos 在~/expe/repos建立了代码库 loongson@debian:~/expe$ ls repos/ conf  dav  db  format  hooks  locks  README.txt 2)建立代码库基本目录构造 mkdir working_copy cd working_copy loongson@debian:~/expe/working_copy$ svn co file:///home/loongson/expe/repos . 取出修订版 0。 loongson@debian:~/expe/working_copy$ mkdir trunk branches tags loongson@debian:~/expe/working_copy$ ls branches  tags  trunk loongson@debian:~/expe/working_copy$ svn add branches/ tags/ trunk/ A         branches A         tags A         trunk loongson@debian:~/expe/working_copy$ svn ci -m "svn common directory structure" 新增           branches 新增           tags 新增           trunk 提交后修订版为 1。 3)svn info可以看到你本地和哪个库相连以及当前版本 loongson@debian:~/expe/working_copy$ svn info 途径:. 地址(URL):file:///home/loongson/expe/repos Repository Root:file:///home/loongson/expe/repos 档案库 UUID:9c193024-16a0-4d5b-b53c-aaddca74e1cf 修订版:0 节点种类:目录 调度:正常 最后修改修订版:0 最后修改时间:-05-23 22:15:44 +0800 (三,23  5月 )   2.本地更改与提交 基本环节: svn update(查看别人有无更新) svn status (查看本地更改与版本管理关系,哪些文献将提交到版本库) svn commit/svn ci (提交) 1)本地修改 我随便做了两个文献,准备加到库里面,作为本地修改一种示例 loongson@Loongson:~/expe/workingcopy/trunk$ cat hello hello word. I am loongson,who are you. loongson@Loongson:~/expe/workingcopy/trunk$ svn add hello A         hello loongson@Loongson:~/expe/workingcopy/trunk$ cat README why not read me???? loongson@Loongson:~/expe/workingcopy/trunk$ svn add README A         hello svn add只修改本地内容,并没有提交 2)查看别人有无更新 这个时候我准备提交(commit)我更改了,一方面我会运营svn update查看别人与否对代码进行了修改 loongson@Loongson:~/expe/workingcopy$ svn up 于修订版 1。 up是update简写,update作用是把别人修改代码先取到本地,上面成果是没有人进行了修改。 为什么要先up呢,这是由于如果有冲突话,应当在本地解决冲突后来,再进行commit,事实上你可以直接svn ci(commit),但是如果别人和你修改了同一种文献,svn也不会让你成功提交,还是需要先进行本地update。 3)查看将要提交内容 当前我已经可以commit了,我先查看一下我需要commit什么,基本规则是:一种patch应当一种commit,一种patch可以是特定一种功能实现,一种bug fix等。 loongson@Loongson:~/expe/workingcopy/trunk$ svn status A               0   hello A               0   README 状态于修订版:     1 svn status作用还涉及,你也许有文献没有添加到版本管理中,例如我下面做了个extra文献作为例子 loongson@debian:~/expe/working_copy/trunk$ touch extra loongson@debian:~/expe/working_copy/trunk$ ls extra loongson@debian:~/expe/working_copy/trunk$ svn status ?      extra 文献前面?就表达没有加入到版本管理,有些时候是也许,例如说生成.o文献。但是这里extra是需要加入版本管理,因而需要执行svn add extra。   4)真正提交 详细查看一下更改内容svn diff hello,svn diff README,我发现这两个是无关更改,她们属于两个不同patch,应当单独提交 因而我提交了两次,并指明提交文献 loongson@Loongson:~/expe/workingcopy/trunk$ svn commit hello -m "add hello" 新增           hello 传播文献数据. 提交后修订版为 2。 loongson@Loongson:~/expe/workingcopy/trunk$ svn commit README -m "add README" 新增           README 传播文献数据. 提交后修订版为 3。 例子中-m内容也太过简朴,每次提交都应当有详细comment,特别是对bug修复,应当详细阐明bug产生因素,修复道理等 从上面看到,应当勤commit,不要等到修改了一大堆文献后来,才想起来要commit。 3.查看历史 svn log svn diff 通过上面commit后来,看看info loongson@debian:~/expe/working_copy/trunk$ svn info 途径:. 地址(URL):file:///home/loongson/expe/repos/trunk Repository Root:file:///home/loongson/expe/repos 修订版:1 节点种类:目录 调度:正常 最后修改作者:loongson 最后修改修订版:1 最后修改时间:-05-23 22:23:05 +0800 (三,23  5月 ) 你可以发现虽然咱们提交了两次,版本已经增长到了3,但是整个working copy版本还是1,因而为了看到完整log,需要执行 loongson@debian:~/expe/working_copy/trunk$ svn up 于修订版 3。 1)svn log loongson@debian:~/expe/working_copy/trunk$ svn log ------------------------------------------------------------------------ r3 | loongson | -05-23 22:45:14 +0800 (三,23  5月 ) | 1 line add README ------------------------------------------------------------------------ r2 | loongson | -05-23 22:45:09 +0800 (三,23  5月 ) | 1 line add hello ------------------------------------------------------------------------ r1 | loongson | -05-23 22:23:05 +0800 (三,23  5月 ) | 1 line svn common directory structure ------------------------------------------------------------------------ 或者看看每次提交更改了哪些文献 loongson@debian:~/expe/working_copy/trunk$ svn log -v ------------------------------------------------------------------------ r3 | loongson | -05-23 22:45:14 +0800 (三,23  5月 ) | 1 line 变化途径:    A /trunk/README add README ------------------------------------------------------------------------ r2 | loongson | -05-23 22:45:09 +0800 (三,23  5月 ) | 1 line 变化途径:    A /trunk/hello add hello ------------------------------------------------------------------------ r1 | loongson | -05-23 22:23:05 +0800 (三,23  5月 ) | 1 line 变化途径:    A /branches    A /tags    A /trunk svn common directory structure ------------------------------------------------------------------------ 2)svn diff 可以是用svn diff命令查看版本之间差别,例如我想懂得r2详细发生了哪些更改 loongson@debian:~/expe/working_copy/trunk$ svn diff -r 1:2 Index:hello =================================================================== --- hello       (修订版 0) +++ hello       (修订版 2) @@ -0,0 +1,2 @@ +hello word. +I am loongson,who are you. 这是原则patch格式,表达hello这个文献在版本0,从0行到0行发生了如下删除动作(其实没有删除),在1行到2行发生了如下增长(就是增长了加号那两行) 4.分支与合并,解决冲突 分支就是在此外一种地方管理代码版本,而不影响主线(trunk)代码。分支因素有诸多,第一次使用svn都但愿建立一种分支,然后在自己分支上工作,相称于自己独立工作空间,这种工作方式没有错,但是svn支持并不是较好,需要编写comment时候记录下每次合并代码版本号,因而我以为当前分支最佳实践是为某个工作目创立一种分支,功能实现后来立即在trunk中合并这个内容,分支使命完毕后就可以删除了。 分支其实很简朴,就是copy一下 loongson@Loongson:~/expe/workingcopy/trunk$ svn copy file:///home/loongson/expe/repos/trunk file:///home/loongson/expe/repos/branches/hi 提交后修订版为 4。 当前你可以选取把那个hi分支check out出来修改,这样子很简朴直接,也可以把本地switch过去,省一点网络带宽 loongson@Loongson:~/expe/workingcopy/trunk$ svn info | grep URL 地址(URL):file:///home/loongson/expe/repos/trunk loongson@Loongson:~/expe/workingcopy/trunk$ svn switch file:///home/loongson/expe/repos/branches/hi 于修订版 4。 loongson@Loongson:~/expe/workingcopy/trunk$ svn info | grep URL 地址(URL):file:///home/loongson/expe/repos/branches/hi 这个时候你本地working copy已经和新URL发生联系了,所有commit都朝向新URL ok当前我开始修改,就是把hello换成hi。 loongson@Loongson:~/expe/workingcopy/trunk$ cat hello hi word. I am loongson,who are you. 但是我发现我错了,其实我是想加一行hi,我觉得我改了太多了太乱了,索性恢复到我checkout时候版本 loongson@Loongson:~/expe/workingcopy/trunk$ svn revert hello 已恢复“hello” 我加了一行后来重新commit loongson@Loongson:~/expe/workingcopy/trunk$ cat hello hello world. hi world,heihei~~~ I am loongson,who are you. loongson@Loongson:~/expe/workingcopy/trunk$ svn ci hello 正在发送       hello 传播文献数据. 提交后修订版为 5。 这个时候我转回去,开始合并 loongson@Loongson:~/expe/workingcopy/trunk$ svn switch file:///home/loongson/expe/repos/trunk U    hello 更新至修订版 5。 loongson@Loongson:~/expe/workingcopy/trunk$ cat hello hello word. I am loongson,who are you. 固然我不急于合并,我添加一种文献模仿主线依然进行着有序开发 loongson@Loongson:~/expe/workingcopy/trunk$ vim accessory loongson@Loongson:~/expe/workingcopy/trunk$ svn add accessory A         accessory loongson@Loongson:~/expe/workingcopy/trunk$ svn ci -m "add accessory" 新增           accessory 传播文献数据. 提交后修订版为 6。 OK,开始合并 合并过程一开始比较难理解,其实简朴说就是把分支上面两个版本之间所作修改作为一种patch,然后应用到你本地上面 记住你比较是分支两个版本,例如说分支开发是从r10到r20,执行svn merge效果相称于把r20到r10两个版本树做一种diff -urN生成一种patch,然后执行patch -p1命令。问题是怎么找出这两个版本呢? 一方面咱们找出咱们是从那个版本开始分支 loongson@Loongson:~/expe/workingcopy$ svn log --stop-on-copy file:///home/loongson/expe/repos/branches/hi ------------------------------------------------------------------------ r5 | loongson | -01-02 11:52:56 +0800 (二,02  1月 ) | 2 lines add hi ------------------------------------------------------------------------ r4 | loongson | -01-02 11:43:08 +0800 (二,02  1月 ) | 4 lines hello to hi ------------------------------------------------------------------------ 也就是说咱们从r4开始咱们分支,到r5完毕,因而咱们执行 loongson@Loongson:~/expe/workingcopy$ svn merge -r 4:5 file:///home/loongson/expe/repos/branches/hi U    hello loongson@Loongson:~/expe/workingcopy$ cat hello hello world. hi world,heihei~~~ I am loongson,who are you. 完毕了合并,注意所有更改都在本地,应当提交一次,并且要记录合并版本 loongson@Loongson:~/expe/workingcopy$ svn ci -m "merge file:///home/loongson/expe/repos/branches/hi -r 4:5" 正在发送       hello 传播文献数据. 提交后修订版为 7。 如果hi分支依然继续开发,请注意下次合并应当从r5开始,避免合并重复内容  建SVN 版本库 -05-19 14:31 svn 服务器:Setup-Subversion-1.6.2.msi svn 客户端:TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi 装完两个软件且重启,没有配备svn服务器任何文献得状况下: 在E盘根目录下建立svn 运营 svnadmin create E:\svn\test test版本库建立成功 之后 启动svn服务器 svnserve.exe --daemon, 之后 使用TortoiseSVN -> Repo-browser 来查看版本库。在弹出 URL 对话框中输入: svn://localhost/svn/test svn建立一种本地版本库 -12-27 15:51 软件需求: 客户端:TortoiseSVN-1.4.6.11647-win32-svn-1.4.6 建立过程: 1、安装客户端软件即可。 2、先建立一种版本库根目录文献夹如:svnRespoistory 3、然后在根目录里,建立相应项目版本库。       在目录E:\svnRespoistory\repository下"右键->TortoiseSVN->Create Repository here...",选取版本库模式,这里使用默认即可,然后就创立了一系列目录和文献。 4、来到项目根目录,进行初始化导入。       右键->TortoiseSVN->Import...    在URL of repository输入"file///E:/svnRespoistory/repository"    注:在这个过程中,并不会把导入文献复制到版本库中,而只是将内容导入到版本库中。此时,这个源文献是可以删除了。 5、基本客户端操作,取出版本库中一种工作拷贝。    运营右键->Checkout    在URL of repository中输入:file///E:/subRespoistory/repository,这样咱们就得到了一份工作拷贝。    注:同样咱们在这里提交修改也就是版本库依照状况来进行相应存储。并不会在复制文献到导入地方或到版本库这个文献夹里。 6、配备顾客和权限    在版本库根目录里conf/svnserve.conf    # password-db = passwd    (去掉#)    同样修改该目录下passwd文献    增长一种顾客帐号如 test = test 参照: SVN个人本地版本库用法 -01-24 13:04 1 下载和安装: 下载一种安装版和一种简体中文包2个安装包,并安装之。 2 建立版本库目录(Project's DataBase Folder) 2.1 在你重要资料分区新建一种目录叫“SVNDB” 2.2 在这个目录里面再建立一种属于你某个工程子目录例如“Project1”,如果你有各种工程,则建立几种 2.3 在“Project1”资源管理器目录树右键菜单“tortoisesvn”->“在此创立版本库” 2.4 新建版本库后,再在此目录按右键菜单找到“版本库浏览器”,在版本库浏览器里,把URL里面地址(例如“file:///E:/SVNDB/Project1”)复制(备用) 3 将既有工程目录和文献导入版本库(Exists Project's Source Temp Folder) 3.1 将你既有工程目录复制到一种暂时目录(例如C:\Project1),将里面不需要加入版本库文献或目录清理好 3.2 在2.4那个版本库浏览器里,右键,加入文献夹C:\Project1(加入完毕后,C:\Project1这个目录就可以彻底删除了) 3.3 版本库在浏览器里右键把Project1改名为trunk 4 建立寻常使用工作目录(Project's Workspace Folder) 4.1 在你寻常使用目录中建立一种文献夹(例如:E:\Project1) 4.2 资源管理器目录树中,在E:\Project1右键菜单点击“SVN 检出” 4.3 在“SVN 检出”对话框中,URL地址里面填“file:///E:/SVNDB/Project1/trunk”(最佳有背面trunk) 4.4 检出完毕后,此目录里面就填布满工程文献和目录了,那么日后编辑或开发代码就在此目录里面工作了。 其她阐明: ·日后写了某些代码,觉得需要备份时就“SVN 提交”,过了些时间要刷新一下就“SVN 更新” ·Windows资源管理器右键菜单在工作目录里面有点不太正常,可以换其她资源管理器(例如:Q-Dir/FreeCmd/MDIE/TotalCmd等) ·在SVN中最重要目录: DataBase Folder ,此文献夹其实就是个备份数据库,把工程目录和文献都用zip压缩在此目录里面(可以观测一下此目录下文献更改) ·如果要撤销某个工程使用SVN,则在资源管理器删除DataBase Folder和Workspace Folder即可。 补充几种目录阐明: trunk -- 主干寻常开发 branches -- 新分支做定制 tags -- 历届版本存档
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服