SVN基本操作之svn checkout
作为svn的用户,拿到一个svn地址,我们首先做的一个事情就是svn checkout,将svn上的关联到本地的一个文件夹中。这个文件夹最好是空的文件夹,或者确保没有和svn上相同名称的路径,当然这也说明这个操作是个连线操作。我们一般在执行checkout的时候只要给出svn的URL和本地的路径两个内容就可以了。这样svn上最新的数据会被传送到这个文件夹,目录结构会自动建好,svn上的文件会自动出现在对应的文件夹中。当然如果你愿意也可以选择一个旧的版本,或者只包含一层目录或者只是这个文件夹中的文件。或许你发现了,每一个文件夹中比服务器上的内容多了个.svn文件夹,这个文件夹中存放着文件夹的属性,这个文件夹中的每个文件的属性、版本还有对应版本的一个副本。
SVN基本操作之svn update
这个操作就是将本地的的数据更新到svn上的某个版本,默认的操作是更新到最新版本,这个操作也是个连线操作。在这个过程中如果有人删除了文件,它会你机器上的文件删除,如果别人改了某个文件,会将这个文件更新。如果你修改了某个文件,别人删除了它,则这个文件不会被删除,只会和svn没关系了。如果你修改了某个文件,而这个文件别人也修改了,在更新的过程中就会试图自动将你的修改合并,如果成功,他的内容就是你修改的和别人修改的内容的并集,如果失败,svn就会将这个文件标记为冲突。冲突的问题我们放在下个说。
SVN基本操作之svn resolve
使用svn意味着你已经走在了工作在编辑和合并的道路上,那么冲突的时候svn做了什么,出现了冲突怎么解决?
在标记为冲突的过程中,如果是文本文件,如cpp和h文件,svn会修改它让他不能进行编译,并产生一个theirs和mime,分别包含svn服务器上的和我自己原来的版本。
如果是二进制文件,svn不会修改它,而会在目录中产生一个r??和r??这两个r??一个是你update之前的svn基础版本,就是你上次执行update的版本,一个是svn上的当前update下来的版本。
你可以选择直接使用theirs或者使用mime或者退回到上一个update版本,或者将两个文件放在一起手工合并作为解决的方法。
这个操作是离线操作。
SVN基本操作之svn commit
svn的commit操作就是将修改从工作拷贝发送到版本库并将版本标记为新的版本,这个过程中如果有人已经对这个版本进行了操作,也就是你的本地基础版本和服务器不同,将会强制你执行一个update操作,这个操作是个连线操作。commit的过程仅仅是将你本地的一些修改提交到svn中让svn上的和你的一致,在提交之前必须已经解决了需要提交文件已有的冲突才行。
SVN基本操作之svn add
如果一个文件不受svn管理,你需要把它添加到svn中,这个操作是个离线操作,仅仅是把这个文件标记为需要添加,真正的添加到svn存储的操作将在下一次commit时执行。这个过程中需要注意不要把一些不必要的文件比如编译的临时文件添加到svn。
SVN基本操作之svn import
当然你可以将一些文件直接添加到svn而不想修改这些文件的svn管理状态,可以选择将它们导入到svn。注意如果将一个文件导入,则给出的url就是它添加到svn的最终文件名,如果将一个文件夹导入,则会将根据目录树所有的子文件和文件夹放到对应的url的对应目录树中,根文件夹不会被添加。
这个操作是连线操作。
SVN基本操作之svn cleanup
这个操作清理整个所选择的文件夹及其子文件夹,但是它不是清理垃圾文件什么的,这肯定不是svn的工作。它也不会把冲突自动解决,如果能自动解决,在更新的时候为什么不做。如果你在某个svn操作时强制中断了,比如svn的操作程序停止相应或者以外终止,就有可能导致文件夹处于锁定状态,这时需要清理。如果你的文件夹中的很多文件时间戳发生了变化,也最好执行以下cleanup这样可以加速svn操作的执行。
这个操作是离线操作。
SVN基本操作之svn delete
既然有方法添加文件,就一定有方法删除,虽然你看到的效果是文件直接被删除了,但是实际上和添加一样,这个操作是个离线操作,操作的结果将被标记,下次commit时服务器上的文件才会被删除。
SVN基本操作之svn revert
如果你的修改出现了问题,或者添加或者删除了错误的文件,等等想还原操作,在commit之前可以执行revert操作,退回某步操作,这样这些修改都会被还原到基础版本状态。这个操作不会和svn服务器有关系,不会连接服务器也不会更新文件,只是简简单单的回复到基础版本。
这个操作是个离线操作。
SVN基本操作之svn diff
这个操作就是比较你的工作版本和某个svn版本的区别,当然默认是你的基础版本,因为你的工作版本就是从基础版本修改过来的么。
在和基础版本比较时是个离线操作,和历史版本比较时是连线操作。
SVN基本操作之svn export
这个操作可以将一个已经在svn管理下的文件夹中的所有工作版本导出到一个文件夹中,或者直接从svn服务器上将一个版本导出到一个文件夹中。导出的文件夹不再在svn的管理控制下,也不会有.svn目录,当然也不会包含不在svn管理下的文件。
在导出工作版本时是个离线操作,从svn直接导出时是连线操作。
SVN基本操作之svn copy
操作的名字显而易见,就是复制操作,在svn上复制文件有什么好处呢,为什么不直接复制文件再添加到svn呢。这个问题我也考虑过,svn copy可以将文件在复制之前的历史保留下来,这应该是最大的好处了。
这个操作是离线操作,需要提交才起效。
SVN基本操作之svn move
和copy一样,历史的留存也是和复制后删除源文件这个方式最大的区别,并且它也是离线操作,需要提交才起效。
SVN基本操作之svn lock
如果你想独占修改这个文件,可以把文件锁定,这样就可以锁定这个文件,这样别人必须等待你提交了修改或者释放了锁才能提交他们的修改。这个操作不会对别人的svn本地存储有什么影响,而只是无法进行数据提交。如果某个文件有svn:needs-lock这样的标志时,文件会被设置为只读,提示你需要获得锁来修改。当然你也可以把文件的属性修改直接修改,这个只是防君子不防小人的。
这个操作时连线操作。
SVN基本操作之svn unlock
虽然是unlock但是实际上这个我们平常不会将他用来和lock配对,因为commit操作时,svn默认自动将锁释放了。这个操作的用处是在你得到锁了之后,又不想锁定这个文件时执行的。还有就是如果别人锁定了这个文件,想强制把这个文件解锁,就可以强制将这个文件解锁。
这个操作时连线操作。
解决代码冲突:
如果修改与update得到的代码不冲突,则自动合并。如果冲突(比如对同一行代码进行了修改),则出现”One or more files are in a conflicted state.“红色警告,并产生几个文件记录冲突。一般情况下,我们不要直接编辑冲突文件。而按照以下操作手工解决冲突。
在资源管理器中,选择commit时冲突的那个文件,鼠标右键菜单选择”Edit conficts”。 出现界面,分为”Theirs”、”Mine”和”Merged”3部分,表示”别人修改的内容”、 ”我修改的内容”和”合并后的结果”3部分。我们是要将”别人修改的内容”和”我修改的内容”有取舍地合并起来,形成”合并后的结果”。
合并一般分为4种情况:
保留”我的修改”,舍弃”别人的修改”。鼠标右键点击Mine框的相应行,点击”Use this text block”。
舍弃”我的修改”,保留”别人的修改”。鼠标右键点击Theirs框的相应行,点击”Use this text block”。
同时保留”我的修改”和”别人的修改”,并将”我的修改” 放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from mine before theirs”。
同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。鼠标右键点击Mine框的相应行,点击”Use text block from theirs before mine”。 合并完成,Ctrl+S存盘,退出。
然后,在资源管理器中,选择冲突文件,鼠标右键菜单选择”Resolved”,标记冲突已解决。系统会自动删除因冲突而新建的文件。此时,就可以继续进行commit操作了。 其实多数时候都是不管别人的修改,添加自己的修改,用手工复制粘贴一下自己的修改,再commit.
分享到:
相关推荐
《我的cvs2svn笔记》是一份详细的指南,旨在帮助用户在Windows环境下将CVS(Concurrent Versions System)版本库转换为SVN(Subversion)版本库。CVS是一种广泛使用的源代码控制系统,而SVN则因其先进的特性,如分支...
### SVN基础知识及应用详解 #### 一、SVN概述与重要性 **版本控制系统**(Version Control System,简称VCS)对于软件开发团队而言至关重要。它不仅能够帮助团队有效地管理和跟踪项目的变动,还能够解决多用户环境...
以下是对"SVN笔记学习"内容的详细解读: 1. **Linux下SVN的搭建** - **安装SVN**: 在Linux系统中,通常通过包管理器来安装SVN,如在Ubuntu或Debian上使用`apt-get install subversion`,在CentOS或Fedora上使用`...
### SVN详细笔记 #### 一、SVN简介与特点 Subversion(简称SVN)是一种分布式版本控制系统,用于管理文件和目录集,并记录这些文件和目录集随着时间的变化历史。相较于早期的版本控制系统如CVS(Concurrent ...
【SVN笔记】 SVN,全称Subversion,是一款广泛应用于软件开发领域的版本控制系统,旨在解决多人协作开发中可能出现的问题,如代码冲突、版本管理混乱等。它通过跟踪文件的修改历史,使得开发者能够轻松备份不同版本...
【尚硅谷SVN课件及安装包】是一个针对版本控制系统Subversion(SVN)的全面学习资源,适合那些想要深入理解和掌握SVN使用方法的人。这个压缩包包含了丰富的教程资料和实际的安装程序,使学习者能够理论结合实践,...
- 学习笔记通常包含个人理解和实践总结,可能涵盖一些实用技巧和常见问题解决方案。 通过以上内容,你将能够掌握SVN的基本操作和使用策略,更好地融入团队开发环境中。在实际工作中,结合具体的项目需求和团队协作...
根据提供的文件名,"svn笔记.docx"可能包含对SVN更深入的使用细节,比如解决冲突、标签(branching & tagging)、回滚等操作的步骤。而"svn和git的简单使用.pptx"很可能是对SVN和Git的对比,可能会涵盖两者的优缺点...
### SVN学习笔记 #### 版本控制的重要性及概念解析 版本控制在软件开发过程中扮演着极其重要的角色。尤其是在多人协作的环境下,版本控制系统能够有效帮助团队成员管理代码、文档和其他重要资源的不同版本,确保每...
【SVN使用笔记笔记】 SVN,全称Subversion,是一种广泛使用的版本控制系统,被誉为程序设计中的“后悔药”。它允许开发团队在多个用户之间共享和管理代码,同时记录每一次修改,以便在需要时恢复旧版本,防止数据...
SVN(Subversion)是版本控制系统中的一种,用于管理和跟踪软件项目中的文件和目录变更。作为一款开源的、跨平台的开发工具,它在协同开发环境中扮演着至关重要的角色,帮助团队成员有效地共享代码,同时保持项目的...
本文将详细讲解如何搭建SVN服务器,并基于提供的"svn搭建笔记.zip"资源进行步骤指导。 首先,我们需要了解SVN的基本概念。SVN仓库是存储项目文件和版本历史的地方,客户端则用来与仓库交互,查看、更新、提交代码。...
集中式版本控制系统以CVS和SVN为代表,它们使用一个单一集中管理的服务器来保存所有文件的修订版本,所有开发者从该服务器下载最新版本,进行开发并提交更改。CVS是最早的开源版本控制系统之一,它可以跨平台使用,...
### Linux下SVN安装与配置含钩子详解 #### 一、SVN简介与作用 Subversion(简称SVN)是一种分布式版本控制系统,主要用于代码管理。它可以追踪每一项对文件或目录所做的更改,并且能够查看任何时刻的版本状态。这...
本文将从SVN客户端与服务器端的安装配置、版本控制操作、用户权限管理以及数据备份恢复等方面进行详细的学习笔记记录。 首先,进行SVN客户端软件的安装,以TortoiseSVN为例,它为Windows环境下提供图形界面的客户端...
【SVN初学者笔记】 Subversion(简称SVN)是一种版本控制系统,用于管理软件开发过程中对源代码和其他文件的修改历史。这篇笔记主要面向初学者,涵盖了SVN的基本操作,包括安装、与Eclipse的集成以及如何有效地学习...
### SVN教程笔记 #### 一、SVN服务端安装与配置 **1. 创建仓库** 在SVN服务端,首先需要创建一个仓库(repository),仓库是存放版本化数据的地方。一个典型的仓库目录结构包括: - **conf**: 包含配置文件。 - **...
### SVN+Trac安装流程详解 #### 一、下载所需安装文件 为了在Windows环境下搭建SVN+Trac系统,我们需要准备以下软件包: - **Python-2.4.4.msi**:这是Python的2.4最终版,因为后续的软件版本与Python 2.5存在...
这份"Maven+Svn安装笔记"的压缩包文件包含了关于这两个工具的详细安装指南和教程。 **Maven** 是一个Java项目管理和综合工具,它通过提供一个标准的项目对象模型(Project Object Model, POM)来管理项目的构建、...