SVN使用:
1. 首先是安装TortoiseSVN这个Win下的客户端(当然用subversion自己的svn这个客户端也可以完成所有操作,理论上)。这个客户端是集成到Explore里的,所以没有什么独立的窗体,所有操作右键菜单来完成。
2. svn使用基本流程:
下面说的命令都与TortoiseSVN菜单上的名称一致。
a. 初次(initial)取出(checkout)repos,建立本地工作拷贝(WC WorkingCopy)。
b. 与repos同步(update),保证将要进行的编辑是最新版本。
c. 编辑源代码(包括创建、修改、删除)。
d. 与repos同步(update),提交之前先要同步到最新的版本,保证所有在自己之前的有关提交已经在本地有所知晓。
e. 解决冲突(resolve conflict)。
f. 提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅。
g. 继续b。
每次开始新的编辑前的同步repos很重要,另外经常地update没有坏处,特别是多人项目中。如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。
在使用的过程中,时刻注意当前的工作拷贝(WC WorkingCopy)所对应的URL很重要,特别是当有了branches和tag等时候。使用svn info可以查看到这些信息。使用TortoiseSVN时,通过下面的操作查看这些信息:右键单击工作拷贝的根文件夹(不是上级文件夹),菜单中选择则属性(不是TortoiseSVN那个菜单),然后在出现的对话框中选择Subversion标签就可以看到了。
3. 使用branches
(关于branches的内容可以在svn-book:Chapter4 Branching and Merging得到)
当多个人合作(Sally和John)时,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。
附:TortoiseSVN帮助里的branch的说明:
One of the features of version control systems is the ability to isolate changes onto a separate line of development. This line is known as a branch. Branches are often used to try out new features without disturbing the main line of development with compiler errors and bugs. As soon as the new feature is stable enough then the development branch is merged back into the main branch (trunk).
3.1 创建branch
(详细的解释参考svn-book:Chapter4 Branching and Merging:Using Branches:Creating a Branch)
实际是svn copy操作
$ svn copy SourceURL/trunk /
DestinationURL/branchName /
-m "Creating a private branch of xxxx/trunk."
TorToiseSVN操作更为简单,只要在working copy里右键空白,然后在TorToiseSVN菜单中选择Branches/Tags,就可将整个目录分支(branch)出去,或者点击某个文件将文件单独分支(branch),而且有多种选择,指定是“直接在服务器端copy HEAD版本”、“直接在服务器端copy指定版本”(这两种相当于svn copy中源和目的都是URL)、“用当前的工作拷贝(WC Working Copy)生成”。同时还有一个checkbox用于在完成了这次分支(branch)后直接切换(switch)当前的工作拷贝(WC Working Copy)到分支。
3.2 使用merge来应用branch的修改
3.2.1 trunk的变化及时更新到branch
例子原型出自svn-book:Chapter 4:Branching and Merging:Copying Changes Between Branches:Copying Specific Changes
接着前面的例子,John在实验过程中,Sally对原有的某个文件做了一些改动,如拼写检查等,John知道了,希望将这些改动也放到自己的当前的工作拷贝(WC Working Copy)中。svn中使用merge指令来完成。假设Sally的修订使repos从Rev345到了Rev346,所以John就是要将Rev345:Rev346(前:后)的变更应用到当前的WC。使用TortoiseSVN的操作就是在WC中右键空白处,然后在相关菜单中选择“Merge...”,在弹出的对话框中,From指定比较前项的位置和版本(这里是trunk的Rev345),To指定后项的位置和版本(这里是trunk的Rev346,可以使用一个复选框使的To的位置与From相同)。
相应的svn merge指令参考后面“merge操作实质”可知。
3.2.2 branch最终合并回trunk
例子原型出自svn-book:Chapter 4:Branching and Merging:Common Use-Cases:Merging a Whole Branch to Another
John经过尝试,终于实现了想法,并通过测试,现在他决定将所有的工作合并到trunk去。
这里要注意的是,John打算合并的是自己的工作,假设John的branch(johnBranch)开始于Rev233,John的工作提交到repos是Rev289,那么John的工作是将johnBranch:Rev233到johnBranch:Rev289的内容合并到trunk。而不是johnBranch:Rev233到trunk:HEAD,因为这个变化包含了对John工作的增加和对trunk中其他人的工作的撤销(如果John没有及时将他人在trunk的工作合并到自己的johnBranch的话)。
TortoiseSVN的操作是这样的,先checkout出trunk(也可以switch到trunk),即保证当前的工作拷贝(WC WorkingCopy)是trunk,然后使用菜单中的“Merge...”,选择From为johnBranch:Rev233选择To为johnBranch:Rev289。
相应的svn merge指令参考后面“merge操作实质”可知。
3.2.3 merge操作的实质
svn merge命令的原型如下
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
svn merge -r N:M SOURCE[@REV] [WCPATH]
In the first and second forms, the source paths (URLs in the first form, working copy paths in the second) are specified at revisions N and M. These are the two sources to be compared. The revisions default to HEAD if omitted.
In the third form, SOURCE can be a URL or working copy item, in which case the corresponding URL is used. This URL, at revisions N and M, defines the two sources to be compared.
WCPATH is the working copy path that will receive the changes. If WCPATH is omitted, a default value of “.” is assumed, unless the sources have identical basenames that match a file within “.”: in which case, the differences will be applied to that file.
可以看出merge实际是比较前后(源:目的)两个版本(revision)之间的差别(用运算符就是 目的 – 源),然后将这些差别应用(施用)到工作拷贝(WC WorkingCopy)上的一个操作,根据源与目的版本号的先后,出现了“合并”、“撤销”(源版本号大于目的版本号)等不同效果,然后通过提交(commit)来将这些效果保存到服务器端的repos中。
4. 版本(Revision)关键字
HEAD, BASE, COMMITTED, PREV是指定版本号时可以使用的一些保留字,含义如下:(参考svn-book:Chapter3:Guided Tour:Revisions:Numbers,Keywords)
HEAD:The latest revision in the repository.
BASE:The “pristine” revision of an item in a working copy.
COMMITTED:The last revision in which an item changed before (or at) BASE.
PREV:The revision just before the last revision in which an item changed. (Technically, COMMITTED - 1.)
说明:
a. 只有HEAD能用于URL,BASE,COMMITTED,PREV都是用于工作拷贝(WC Working Copy)的。
b. HEAD虽然含义是“当前最新的版本”,但用于WC时,当前未提交(即未进入版本管理)的变化是不包含在内的。所以比如:
刚commit过main.txt为Rev10,即HEAD=10,COMMITTED=10,这时对main.txt进行一些编辑,然后svn diff -r HEAD:COMMITTED,不会显示刚刚的编辑操作,因为刚刚的编辑操作并没有纳入到版本管理,即HEAD没有反映出“当前最新”,实际是反映的“当前版本管理中的最新”。
c. BASE的含义,上面的英文说得不够清楚,其实是指最后一次更新(update)操作 或者 取出(checkout)操作(当initial checkout)时取出的那些文件,这些被svn无修改地保留在.svn管理目录里。
5. 文件的添加、删除、重命名
当向项目里添加了一个新文件时,需要使用TortoiseSVN菜单中的“add”指令来为下一次commit做添加文件的准备,使得下次commit时知道有这样的事件发生。对应的svn命令行操作就是svn add。
当从项目里删除文件时,也需要显示地将这个事件告诉svn,方法就是右键单击要删除的文件,在TortoiseSVN菜单中选择删除,而不是简单地用os的删除。
文件重命名与删除同理。
6. 忽略列表
比如一个VC的项目用subversion管理,vc会生成debug目录,release目录以及其下的编译临时文件,而我们可能只需要对源文件进行版本管理,那些临时文件都不关心,这时可以把他们加入ignore list。同样使用TortoiseSVN菜单完成这个。对于错误的加入到了ignore list的文件,可以在TortoiseSVN菜单中的Remove from ignore list撤销。这个暂时不知道svn对应的命令。
7. 解决冲突(conflict)
所谓冲突,简单地说,就是两个人改了同一个地方,而修改又不同。比如Sally和John同时Update到了最新的trunk,Rev5。Sally吧main.txt的第一行改为了x=5,提交了,然后repos到了Rev6,同时John在自己的工作拷贝(WC WorkingCopy)中,把main.txt第一行改成了x=6,然后准备同步(update)repos然后提交,可是在update的时候就会提示出现了冲突(conflict)。这时svn目录下出现了几个文件:main.txt.mine, main.txt.r5, main.txt.r6
按照svn-book的解释,含义如下:
filename.mine : This is your file as it existed in your working copy before you updated your working copy—that is, without conflict markers. This file has your latest changes in it and nothing else. (If Subversion considers the file to be unmergeable, then the .mine file isn't created, since it would be identical to the working file.)
filename.rOLDREV : This is the file that was the BASE revision before you updated your working copy. That is, the file that you checked out before you made your latest edits.
filename.rNEWREV : This is the file that your Subversion client just received from the server when you updated your working copy. This file corresponds to the HEAD revision of the repository.
其实就是main.txt.mine是John执行update之前的本地文件main.txt,main.txt.r5是本地上次update时得到的,即BASE版,而main.txt.r6是这次update得到的。这时还有一个main.txt文件其实是包含了相互冲突的内容的用于手工解决冲突的文件。
解决冲突有三个方法:
a. 手工解决。编辑main.txt,保存其成为最终希望的版本。然后使用svn resolved去掉conflict标志。TortoiseSVN的操作这次要复杂一些,在main.txt上右键,菜单中选择“resolved...”,在弹出的对话框中右键main.txt,然后在对话框中选择“resolved”,tortoiseSVN会要求确认一次,选择yes之后会发现生成的三个临时文件没有了,而main.txt的冲突标记变成了修改。
b. 直接选用使用一个临时文件。命令行相当于这样:
$ cp main.txt.mine main.txt
然后同样要用svn resolved去掉conflict标志。这个方法的TortoiseSVN的操作是在“resolved”对话框里,右键main.txt的菜单上选择“Resolved conflict using mine”或者“Resolved conflict using theirs”
c. 撤销更改。这是John决定放弃自己对main.txt的更改并且接受Rev6版时的做法。用这种方法,如果是用svn这个client时,无需调用svn resolved了,因为不打算提交新的内容到repos(当然如果其他的resolve决定提交新的内容时,还要对其他文件resolved的)。TortoiseSVN里的操作是在冲突菜单(resolved对话框里右键单击要解决冲突的文件时出现的菜单)里选择Revert,同样tortoise会让要求确认一次。
当有多个conflict时,需要一个一个resolve,TortoiseSVN的Resolved对话框里每次都是对一个对象进行操作,尽管前面的有复选框(复选框作用未知,猜测是跟lock关)。
相关推荐
基于强化学习框架的交易策略学习过程
每个状态s∈S 是一个由六个微观结构特征构成的向量,这些特征反映了当前市场的订单簿状态和近期交易行为。
svn冲突问题详解 SVN版本冲突解决详解
解决版本冲突的命令。在冲突解决之后,需要使用svnresolved来告诉subversion冲突解决,这样才能提交更新。冲突发生时,subversion会在WorkCopy中保存所有的目标文件版本(上次更新版本、当前获取的版本,即别人提交的版本、自己更新的版本、目标文件。 开发人员都知道代码管理工具是开发中一个必不可少的工具,这里也不废话详细介绍了。不管你个人喜欢git还是svn还是其他,但
实战指南:在UE5中高效集成Entt(ECS)框架
本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。
SVN解决冲突命令resolve和resolved
使用如下命令解决冲突 svn resolve index.html 手工编辑修复,而不是命令解决冲突,需要执行如下命令通知SVN服务器冲突已解决 svn resolved index.html 注意一个是加了字母d,表示已解决(完成时) ...
Kali实战:构建安卓远程监控工具,实现拍照、定位与信息获取
本文详细介绍了如何使用Kali Linux构建安卓远程监控工具,实现拍照、定位与信息获取功能。通过Metasploit框架生成安卓载荷,部署到目标设备并建立连接,执行远程监控操作如获取位置信息、拍照和读取通讯录。文章还提供了进阶技巧与问题排查方法,强调法律与道德考量。
别再让地图加载慢吞吞!GeoServer + GeoWebCache 缓存配置实战(附性能对比)
本文详细介绍了如何通过GeoServer和GeoWebCache优化地图服务性能,实现地图加载速度的显著提升。从缓存机制解析到实战配置流程,再到高级性能调优技巧,帮助开发者构建高效地图缓存系统,解决地图加载慢的问题。
arc land出错
git arc land 出现报错提示:separate these revisions onto different branches, or use --revision <id> to use the commit message from <id> and land them all
RK3568平台开发系列讲解(项目篇)手写数字识别
📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。
史上最全SVN使用总结,建议先收藏后观看
面试一面会问很多基础问题,而这些基础问题基本上在网上搜索,面试题都会很多很多。最好把准备一下常见的面试问题,毕竟面试也相当与一次考试,所以找工作面试的准备千万别偷懒。面试就跟考试一样的,时间长了不复习,现场表现肯定不会太好。表现的不好面试官不可能说,我猜他没发挥好,我录用他吧。96道前端面试题:常用算法面试题:内容主要包括HTML,CSS,JavaScript,浏览器,性能优化SVN分支=====面试一面会问很多基础问题,而这些基础问题基本上在网上搜索,面试题都会很多很多。
HyperLynx(二十二)DDR(五)DDRx总线时序模型设计
DDR3 的数据选通信号与时钟信号的频率是一样的,在数据选通信号写操作时,控制器典型的输出方式是数据选通信号边沿与时钟近似对齐。该界面中显示了所有需要编辑的参数,包括地址/命令信号的时序、控制信号的时序、读和写操作的数据选通和数据信号时序、写操作的数据选通和数据掩码信号时序,以及建立和保持时间的降额参数。由于DDRx总线对时序的要求非常严格,随着速率的提升,时序的要求会更高。反之也是一样的,如果数据选通信号的上升沿在时钟信号上升沿的后面到达 DRAM,那么数据选通信号的下降沿就会在时钟信号的前面到达。
使用Python爬虫抓取公共交通网站的时刻表
Python爬虫是一种通过自动化方式从网页中抓取数据的程序。爬虫通过模拟用户请求,获取网站的HTML页面内容,并通过解析这些HTML内容,提取出我们需要的信息。requests:用于向网站发送HTTP请求并获取响应。:用于解析HTML文档,提取数据。Selenium:用于处理动态加载的网页,模拟浏览器操作。pandas:用于数据处理和分析,方便存储和操作抓取到的数据。本文介绍了如何使用Python爬虫抓取公共交通网站的时刻表,并提取其中的关键信息。我们使用了requestsSelenium和。
TortoiseSVN工具的日常使用
1.简介(来源于菜鸟教程) Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录 svn的相关概念、功能的介绍请看svn使用教程。 2
2025年“区块链技术”职业院校技能大赛赛后复盘与总结(必看)
记录一次2025年“区块链技术”职业院校技能大赛的参加经验总结与赛后复盘
mac 下 SVN使用方法
mac下自带SVN,所以不需要下载SVN软件就能使用该功能。 在Users/cindy/IOS 下创建一个svn文件夹 linux命令:cd /User/cindy/IOS
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
SVN使用方法详解
SVN是如何使用的你是否熟悉,在这里简单向大家介绍一下SVN是如何使用,希望通过本文的介绍大家能够掌握SVN使用方法,欢迎大家一起来学习。 AD:2013云计算架构师峰会课程资料下载 本节和大家一起学习一下SVN使用方法,主要从三方面来介绍,在这里和大家分享一下,希望本节的介绍对你的学习有所帮助。 SVN使用: 1. 首先是安装TortoiseSVN这个Win下的客户端(当然用
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
svn的使用方法
SVN的使用方法注:使用之前请务必先被项目负责人授权通过后再使用一、首次使用:1、首先,注册SVN账号;然后登入阿里云codebaosvn之后再点击头像,然后点开项目,随后复制SVN路径。 注意:由于现在没有使用taobaosvn,使用的是自己搭建的svn服务器。账号密码以及项目路径由组长配置并给到各个开发人员。2、在本地新建项目文件夹,文件夹的名字最好是英文,在文件夹里面点击鼠标右键,点...
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
SVN库迁移整理方法总结
转:http://blog.chinaunix.net/uid-354915-id-3766906.html
svn使用方法
下载并安装SVN客户端工具,如TortoiseSVN(Windows)或命令行工具(Linux/macOS)。安装完成后,配置用户名和密码以便身份验证。TortoiseSVN用户可通过右键菜单选择“SVN Checkout”完成操作。TortoiseSVN用户可右键点击文件夹选择“SVN Commit”。同步远程仓库最新代码。命令将远程仓库代码下载到本地。修改本地文件后,通过。查看提交历史,或通过。
Svn清理方法
<br /><br />题注:<br /> <br />部门svn版本库自打使用就没清理过,随着svn版本库体积的逐步增大,每次备份所需的时间和介质数量都在增大,而且部门svn服务器空间有限。因此,有必要对svn服务器进行定期清理。今天把svn的文档认真的研究了一下,整理出svn版本库清理的方法,特放到网上,供有类似需求的同志们参考。<br /> <br /> <br />Svn清理方法<br /><br /><br />经过研究分析,比较可行的Svn库的清理方法有两种:<br />1、dump方法(推荐)
Totorise SVN 使用方法
点击: Totorise SVN 使用方法
svn客户端Tortoise SVN使用方法
svn客户端Tortoise SVN使用方法 转载自:http://www.cnblogs.com/armyfai/p/3985660.html(该博主介绍比较详细,这里只转载其中svn客户端使用部分) 1.首先我们需要下载 ”svn小乌龟”后,进行安装。比如我下载如下的: 安装完成后,比如在我的项目在qiandaun1中,我右键就可以看到如下: 说明snv已经安装成功...
Android Studio SVN 使用方法
本文讲解了我对Android开发现状的一些看法,也许有些人会觉得我的观点不对,但我认为没有绝对的对与错,一切交给时间去证明吧!愿与各位坚守的同胞们互相学习,共同进步!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
SVN使用方法简介
Android开发离不开两个开源平台:一个是GitHub,另一个就是SVN. GitHub在之前的文章中已经介绍过,今天给大家介绍一下SVN的基本使用方法。 安装SVN: (很简单一句命令) sudo apt-get install subversion 查看SVN版本: svn --version 更新文件: svn update 从版本库取出一个工作副本:(白话就是从Git...
Ubuntu下SVN的使用方法
SVN作为日常开发中不可缺少的工具,今天终于开始在Ubuntu下使用了。 1、首先需要安装SVN。Ubuntu下的SVN安装十分简单,sudo apt-get install subversion,然后根据提示一步一步,就完成了SVN的安装; 2、检出文件(checkout)。 使用命令:svn co http://{svn repository url} /desti
MyEclipse中SVN的使用方法
MyEclipse中的SVN操作手册 1.导入项目 点击工具栏上的【File-Import】,进入下图 (如果你的对话框中没有SVN这一条目,可能是因为你没有安装SVN插件,请安装完成后,在看这篇博客) 点击Next进入下图 点击Next进入下图,输入你SVN服务器的IP地址,包括端口号和文件夹等完整路径 点击Next进入下图 输
svn 常用命令及使用方法
svn 常用命令及使用方法 检出(co) 让svn从版本库的一个目录中取出东西并创建一个工作拷贝。 命令1:svn co URL 导出SVN库中的最新版本 备注: 如果省略路径参数,则 URL 最末尾的目录名作为目标目录名。如果指定多个 URL,则依次将其签出到 PATH 的子目录中,子目录名就是 URL 最末尾的目录名。 默认情况下,svn迁出的是版本
1110



被折叠的 条评论
为什么被折叠?



