一直以来,对svn的概念都比较模糊的,出了问题也不知道从哪里做手分析。现在把svn重新学习了一遍,对以前的一些模糊或者错误的概念明晰了一下。
1.svn的服务器版本库里的版本号是一个全局的概念的,对整个目录树和所有的文件有效。但是工作拷贝里面(客户端的工作目录)却是一个混合的版本。每个文件有一个基准版本(svn update时的版本号,eclipse里面svn插件的compare里面的基本修正版,也是这个意思)
2.每次commit时,并不会自动update,这也是造成1中工作拷贝混合版本的主要原因。当前版本为1,用户Aupdate,共有文件ab,这时用户B commit a,版本2,A commit b 版本3,这时,A 是1,3的混合,B是2,1的混合。
3.建立版本库
svn create /home/svn_space/版本库名称,每个版本库一个指定的目录。
svnserve -d(以守护进程运行)来发布,默认会发布系统里所有的版本库目录,以绝对路径访问。svn://host/home/svn_space/版本库1
-r 可以发布指定目录下的,而且以该目录为工作目录,一般都会采用该形式。所以如果有多个版本库,放在一个统一的目录下也很重要。(如上面的svn_space)
svn -d -r /home/svn_space/ 访问svn://host/home/svn_space/版本库1,版本库2
import [path] url
import dream3 svn://localhost/dream3/trunk 可以到子目录,这个是常用的。
把内容导入版本库,可以看成批量的svn add,然后commit
checkout url [path] 得到工作拷贝也可以指定url子目录,没有path的默认.
4.基本工作周期
更新你的工作拷贝
svn update
做出修改
如果是目录树的修改,在修改目录树的同时,要执行下面命令,对文件内容的修改则不必。
svn add 该命令之前需要先新建文件,命名本身不会新建文件。
svn delete 同上。
svn copy 会新建文件
svn move 等价与copy delete,改命一定要用这个,不然,就出错,很麻烦。
eclipse在执行目录书更改的时候会执行对应的命令,所以修改尽量在eclipse中完成。
查看修改
svn status
svn diff
svn diff file.txt 比较基准版,和工作拷贝
svn diff -r n file.txt 比较某版本和工作拷贝 常用 -r HEAD
svn diff -r n1:n2 file.txt 比较两版本
该命令对应eclipse中的compare
可能会取消一些修改
svn revert 非常有用,经常会给某些文件价格了换行,空格之类的就会被要求提交,以前自己也就随手提交了,这样的不好,问题是一可能导致冲突,二是是history变得不清晰,正确的办法是对于自己觉得不该提交的文件,先diff,如果没有什么修改,revert
解决冲突(合并别人的修改)
解决冲突一定是在本地,需要先update,以前概念不清,svn会先尝试自动合并(二进制文件不会),如果有冲突会产生3个文件。file.Rn1你的base版本,flie.Rn2其他人提交的和你冲突的版本,file.mine你修改的版本,原来的file里面有冲突的标志。删掉这3个冲突文件就可以commit了,也可以用命令svn resovled来删除。
svn update
svn resolved
提交你的修改
svn commit
4.分支。
可以用处理发布,新特性的开发,bug修正和新功能开发同步等问题。
svn并没有真的分支的概念,分支是通过组合一些命令的使用实现的
首先是目录布局/dream3/trunk /dream3/branches/ 然后就可以建立分支了
svn copy /dream3/trunk /dream3/branches/release1.0
分支间特性的搬运,合并,是通过svn merge来实现的,想想新版本中又出现发布版已经修复的bug,又需要重新修复,这个命令的使用是非常值得的。
这个跟svn diff的使用一样,它只是吧diff出来的内容update到你的工作拷贝。比如release的版本是从n1开始修复bug到n2,trunk可以执行 svn merge n1:n2 svn://host/branched/release1.0/ dream3
注意merge的强大之处,如果n2<n1的话,可以撤销n1到n2的改动,但保留n2,到HEAD的改动。
分享到:
相关推荐
### 版本管理与SVN学习总结 #### 版本管理基本概念 版本管理是一种用于跟踪文件或项目在不同时间点的变化的技术。它允许开发者在软件开发过程中保存多个版本的历史记录,以便随时回溯到之前的任何状态。版本控制...
本文将重点介绍Subversion(简称svn)这一版本控制系统,包括它的基本概念、主要功能以及安装配置步骤。 首先,svn的核心概念主要包括版本号、基线、冲突和分支。版本号是每个文件或目录变更的标识,它反映了代码的...
7. **SVN学习资源** - "SVN简明教程"可能包含基础操作的快速指南,适合初学者快速入门。 - "SVN中文教程"可能涉及更深入的用法,包括高级特性及实践案例。 - 学习笔记通常包含个人理解和实践总结,可能涵盖一些...
总结来说,Eclipse SVN学习手册涵盖了从安装、配置到日常使用的全过程,包括项目分享、版本控制、协同工作、冲突解决、分支和标签管理。熟练掌握这些知识,将使你在软件开发中的版本管理更加得心应手。通过实践和...
在“svn技术总结本人自己学习笔记.zip”这个压缩包中,我们可以期待找到关于SVN的基本概念、安装配置、日常操作、冲突解决以及高级特性的学习记录。 首先,SVN的核心概念包括仓库(Repository)、工作副本(Working...
【总结】 Subversion是一个强大的版本控制系统,适用于团队协作和项目管理。其目录版本化、高效的分支操作以及丰富的特性使其成为开发者的选择之一。掌握Subversion的基本操作和高级特性,对于提升开发效率和项目...
总结中提到的文件状态图标是SVN客户端中提供的直观反馈机制,它有助于用户快速理解文件的版本控制状态,从而提高工作效率。 在学习笔记中还提到了一些可能遇到的问题及解决方法,比如在安装配置过程中可能会遇到的...
总结来说,"svn.zip"中的SVN插件是为了更好地在开发环境中集成版本控制功能,帮助开发者高效地进行团队协作和代码管理。熟悉并掌握SVN的基本操作和插件的使用,对于任何软件开发团队来说都是至关重要的。
**文件名称列表:** "svn学习笔记.doc" 这是一个文档文件,很可能是博主详细记录的安装步骤和经验总结,可能包含了截图、命令行示例以及遇到问题的解决方案。 **详细知识点:** 1. **Subversion(svn)基础:** ...
总结起来,这个压缩包是SVN 1.9.7用户的一个全面资源包,包含了安装、汉化和学习所需的所有元素,适合个人开发者和团队使用。通过熟悉并应用这些知识,您可以高效地管理代码版本,提高开发效率,并保持项目源代码的...
总结起来,这个压缩包提供了完整的SVN工作流程所需的工具,包括服务器端和多种客户端选择,以及配套的文档教程资源,是学习和使用SVN的全面资源集合。无论你是新手还是经验丰富的开发者,这些工具都能帮助你更高效地...
总结,SVN是软件开发中不可或缺的工具,它通过SlikSVN这样的客户端提供了高效的合作环境。通过安装SVN服务和客户端,开发者可以实现代码的版本控制,提高团队协作效率。而详尽的文档和图解则有助于快速上手和深入...
**svn合并** `svn merge`是Subversion(简称svn)中的关键...通过学习这些知识点,你可以更有效地管理版本控制,提高团队的生产力,减少因合并和冲突带来的困扰。务必实践操作,结合文档中的图解,以加深理解和记忆。
以上列举了一些常见的SVN错误及其处理方法,希望能对正在学习和使用SVN的朋友们有所帮助。面对SVN中的各种问题,保持耐心,逐一排查,通常都能找到合适的解决方案。对于更复杂的错误,建议查阅官方文档或寻求专业...
- **新手入门**:对于从未接触过版本控制的新手来说,可以从了解什么是版本控制系统开始,逐步学习SVN的基本概念和常用命令。例如,如何创建一个SVN仓库,如何检出、更新和提交文件等基本操作。 - **中级用户**:有...
### SVN基本操作与命令详解 #### 一、概述 Subversion (SVN) 是一...通过上述命令的学习,可以有效地管理和维护SVN仓库中的代码,提高团队协作效率。希望这些基本操作能帮助您更好地使用SVN进行项目开发和版本管理。
总结:通过本指南的学习,您应该已经掌握了SVN的基础知识、基本操作以及一些高级功能。SVN作为一款强大的版本控制系统,对于提升项目管理和协作效率有着重要作用。希望您能够在实际工作中熟练运用这些知识,更好地...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理源代码和其他文件的变更历史。在软件开发中,SVN扮演着至关...在实际工作中,不断实践和总结,你将能够掌握SVN的精髓,成为一名优秀的版本控制专家。