TortoiseSVN使用方法

2023-11-10

安装和配置

TortoiseSVN的下载地址为

http://tortoisesvn.net/downloads.html

有32位和64位的版本,一定要根据自己的操作系统下载对应的版本,最好安装一个简体中文的Language packs,可以更好的理解TortoiseSVN的功能。

对比工具可以使用winmergebeyond compare,winmerge免费小巧,beyond compare功能更强大。这两款工具都比TortoiseSVN自带的对比工具要好一些。

在TortoiseSVN中的配置方法:

winmerge安装时勾选集成到TortoiseSVN

beyond compare要复杂一些,右键,TortoiseSVN - 设置,

差异查看器(Diff Viewer),设置用来比较不同版本文件的程序(comparing different revisions of files),设置用来比较不同版本属性的程序(comparing different revisions of properties),勾选外部,输入

"D:\Program Files\Beyond Compare 3\BComp.exe" %base %mine /title1=%bname /title2=%yname /leftreadonly

差异查看器/合并工具(Merge Tool),勾选外部,输入

"D:\Program Files\Beyond Compare 3\BComp.exe" %mine %theirs %base %merged /title1=%yname /title2=%tname /title3=%bname /title4=%mname

红色部分为beyong compare的路径,要带双引号。

创建本地版本库

要测试TortoiseSVN的功能,总不能在公司的正式服务器上乱搞把,所有先要创建一个测试的版本库。

新建一个文件夹,名字不要用中文,进入文件夹,点击右键TortoiseSVN - 在此创建版本库。

TortoiseSVN会在这个文件夹创建版本库,并且会弹出一个提示框

点击“创建目录结果”,然后启动版本库浏览器,就可以看到版本库的目录结构

通过点击“创建目录结果”,TortoiseSVN自动创建了3个文件夹,branches,tags,trunk,很多人都会使用TortoiseSVN,但是对这三个目录去取不了解。

trunk目录

主干目录,一般情况下是在此目录下进行代码的开发,这个目录应该存放最新的代码。

tags目录

代码的版本标记,这个目录的代码不允许更改,比如,软件发了1.0版本,就需要将1.0版本的代码在tags中放一份拷贝,发了2.0,就要在tag中标记一个2.0。如果1.0软件出现了bug,开发人员要验证bug,直接从tag中取1.0版本的代码就可以了,不会把个个版本混淆。

branches目录

分支目录,用于开发新功能或解决老版本的bug。比如,1.0版本上线,开发人员全力投入2.0版本的开发,但是,1.0版本突然出现了一个bug必须要修复,而且很紧急,不能等到2.0版本上线,这时候该怎么办呢。正确的做法是,从tag中取1.0版本的代码,建立一个新的分支,开发人员在这个分支上解决1.0发现的bug,解决完成并测试通过之后,在tag中添加一个新的版本标记,比如1.1,然后关闭这个分支。如果1.1再出现bug,那么从1.1建立分支,以此类推,直到2.0出现。

 

加入和检出工程

 

由于版本库是本地,我们可以通过文件路径来访问,右键TortoiseSVN - 版本库浏览器,输入

file:///F:/svn_test/

F:/svn_test/就是刚才创建版本库的文件夹

打开版本库浏览器,在trunk目录点击右键,加入文件夹,加入一个新的Android工程TestSVN。

然后将这个工程检出

.settings bin gen这三个目录和代码无关,要先忽略掉,选中这三个目录,右键 TortoiseSVN - 去除版本控制并增加的忽略列表。

提交代码后,这3个文件夹有改变的话不会有提示。

修改代码

删除文件,正确的做法是在要删除的文件上点击右键 - TortoiseSVN - 删除。

还原修改,右键 - TortoiseSVN - 还原。

重命名,同样,右键 - TortoiseSVN - 改名。

增加文件,右键 - TortoiseSVN - 增加,文件会变成小加号

移动文件,直接打开版本库浏览器拖动,或者剪切,提交

解决冲突,冲突形成的原因是两个人同时修改了一个文件的同一个地方,

例如:原始文件为,版本为1

package com.example.test;

public class Test {
    
    String test = null;

    public Test(String test){
        this.test = test
    }
}

A和B都checkout这个文件,A修改了文件并进行提交,文件版本变为2

package com.example.test;

public class Test {
    
    String test = null;

    public Test(String test){
        this.test = "test"
    }
}

B修改了文件

package com.example.test;

public class Test {
    
    String test = null;

    public Test(String test){
        this.test = "aaa"
    }
}

这时候,如果B更新文件,就会提示冲突

冲突原因是两人同时在版本1上进行了修改。

这时要求B对比对比A做的修改和自己的修改,同A沟通后确定最终的代码,然后进行合并。

这里用B的代码为最终代码,修改方法为:

在冲突文件点右键 - TortoiseSVN - 编辑冲突,在最下面的编辑框冲突的地方,也就是是红色叹号的位置点击右键

选择使用“我的”文本块,合并后的代码为:

package com.example.test;

public class Test {
    
    String test = null;

    public Test(String test){
        this.test = "aaa"
    }
}

 

去掉了this.test = test,增加了this.test = "aaa",保存,弹出窗口

选择标记为解决,冲突的叹号就没有了,文件就可以正常的提交了。

如果使用beyond compare的3路合并工具的话,代码更加的直观

左边为B修改后的文件,中间为原始文件,右边为A修改后的文件,最下边为合并后的文件。点击蓝色小箭头使用左边文件,点击黄色小箭头使用中间文件,点击紫色小箭头使用右边文件。

修为完成保存后,要手动标记为解决,右键 - TortoiseSVN - 解决。

创建分支和标记

说白了就是在其他的文件放一份拷贝,打开版本库浏览器,在要创建分支或标记的工程目录上点击右键

 

选择复制到,输入目标路径,分支是branches,标记是tags

最好输入日志信息,这样就实现了分支或标记

可以通过分支图查看,每增加一个分支,版本号加一。

创建和应用补丁

如果有多个分支,比如XXX纪念版,XXX专版,XXX增值版,修改一个地方要同步到多个分支,是个很麻烦的事情,这时候可以用补丁来解决。

还是使用上面的工程,有一个主干和两个分支,主干中有一个 Test.java 文件

public class Test {

    private String test;

    public Test(String test) {
        this.test = test;
    }
}

将 “this.test = test;” 修改为 “this.test = "aaa";”

在文件夹的空白处点右键 - TortoiseSVN - 创建补丁,选择修改的文件,点确定,创建一个Test.java.patch的补丁

在检出的分支中点击右键 - TortoiseSVN - 应用补丁,补丁效果如下

 

合并

在要合并的副本点击空白处点击右键 - TortoiseSVN - 合并,

选择第三个选项,

关于起始和结束的url,查看版本分支图

结束的必须大于起始的的版本号,我想把b1分支的版本5合并到主干,就按下图填写

提交代码后再次查看版本分支图

主干的版本号升级为6,合并完成

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TortoiseSVN使用方法 的相关文章

  • IIS7 和 ARR 作为 Subversion 的反向代理

    我使用 IIS7 和应用程序请求路由扩展来充当 Apache 上运行的 Subversion 的反向代理 代理工作正常 我能够探索服务器 甚至执行 签出 但是 我无法浏览 ASP NET 通常禁止的文件 例如 cs csproj 等 ASP
  • 基于网络的颠覆查看器[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SVN 存储库的总大小?

    当我测量服务器上的文件夹大小时 我有一个 8 GB 的 SVN 存储库 但是当我在本地检查它时 只需从根目录检查完整存储库 所有分支 标签 其大小为 50 GB 仍在计算中 看来 SVN 在压缩内容方面做得很好 怎么尺寸相差这么大 有没有什
  • Tortoise 无法连接到 subversion 服务器

    我正在尝试在我的家庭服务器上设置 Subversion 存储库 经过一些更改后 我在 Windows Server 2003 服务器上卸载并重新安装了 VisualSVN Server 并且存储库的地址 即 URL 是https serve
  • 设置了 @version $Id$ 的 SVN Checkout

    我在 Subversion 中进行开发 在每个 PHP 文件的顶部都有以下注释块
  • 是否可以链接 SVN 存储库文件,以便一个文件实际上是对另一个存储库文件的引用?

    我可以看到这个概念有一些潜在的困难 但想法是 我更改存储库 A 中的文件并提交 存储库 B 有一个文件是存储库 A 中文件的链接 我在存储库 B 的工作副本中单击文件上的更新 然后从存储库 A 接收更新的文件 是的 无论如何对于目录 See
  • SVN提交失败,访问被禁止

    最近我面临着提交SVN的问题 我使用的SVN服务器是VisualSVN Server 2 5 9 客户端是TortoiseSVN 1 7 12 起初 一个用户在将文件提交到 SVN 时遇到问题 但该用户仍然可以访问存储库并下载更新 第二台
  • 如何修复损坏的本地 Subversion 工作副本?

    我通常使用 git 对 Subversion 的基础知识知之甚少 所以请保持温柔 我在 Windows 7 上使用 TortoiseSVN SVN 客户端最近宣布需要升级 所以我就这么做了 所有文件都丢失了源代码管理图标 并且资源管理器中出
  • 使用 svn_access_file 中的 LDAP 组设置 Subversion 存储库

    如果我从头开始这样做 我会创建这两个单独的存储库 不幸的是 我不得不凑合着用现有的东西 我们的存储库如下所示 trunk tags branches secret trunk secret tags secret branches 我的 S
  • intellij idea 和 eclipse 可以一起使用吗

    对于某些人来说 这可能看起来有点奇怪 但我仍然想知道这是否可能 到目前为止 我们有很多项目是在 eclipse 上编写的 我们中的一些人想进入 intellij idea 的世界 我们可以同时通过 eclipse 和 intellij 一起
  • 使用 Subversion,如何从一个文件剪切并粘贴到另一个保留历史记录的文件

    情况是我花了一些时间搞乱一些实验代码 我现在想将该代码的一部分 大约 500 行 移动到另一个文件中 但我不想丢失历史记录 就像我进行简单的文本编辑器剪切和粘贴一样 据我所知 最接近的方法是将代码从原始文件中分离出来 svn 副本 然后从两
  • 在 Eclipse 中加速或关闭 SVN 缓存更新

    每次我打开 Eclipse 时 都会花费很多时间 30 到 60 分钟 来更新 svn 缓存 那么您能告诉我 有什么办法可以加快或关闭 svn 缓存更新吗 如果我关闭svn缓存更新会有什么影响 我注意到在运行 Eclipse Neon 的机
  • SVN Visual Studio 存储库的工作目录结构

    我刚刚在我们公司为 Visual Studio 项目引入了 SVN 并创建了一个如下所示的存储库 解决方案 是 Visual Studio 解决方案 包含 1 n 个项目 solution1 trunk projectA projectB
  • 您对版本控制进行到什么程度了? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SVN 提交前撤消删除

    如果您从 SVN 工作副本中删除了一个目录 但尚未提交 则如何将其恢复并不明显 当您输入 svn undo d 时 Google 甚至建议将 svn undo delete before commit 作为常见查询 但搜索结果没有任何帮助
  • Eclipse 与外部 src 和 Web 内容文件夹链接或映射

    首先这不是问题但是我遇到的问题的解决方案浪费了4 5个小时来找到解决方案 请让我知道是否有更好的替代方法来使用 eclipse 项目管理外部 src 文件夹 我正在使用版本控制系统 GIT 来管理我的项目 还使用外部 Git 客户端 Sou
  • 如何最好地处理不应该提交的 SVN 和本地更改?

    我已经从 SVN 存储库中查看了一些项目 为了构建这些项目 我必须调整一些配置 例如类路径和属性文件 以适应本地环境 现在我不想将这些更改提交到存储库 因此设置 svn ignore 可能会有所帮助 但是 如果我想从存储库获取更新而不提交这
  • 如何告诉 subclipse 在提交时忽略修改的文件

    我有一个受版本控制并由我修改的文件 但是我不想提交它 我希望只有我才能拥有我所做的特定更改 而其他人都将拥有该文件的原始版本 我怎样才能做到这一点 我经常遇到同样的问题 我的解决方案是与变更集 如果您使用 Mylyn 每个更改都会添加到活动
  • TortoiseSVN 无法连接到 SlikSVN Subversion 服务器

    我已经在工作组中的一台计算机上创建了 SubVersion 服务器 从我的开发盒中 我可以毫无问题地访问存储库并签入 签出文件 我刚刚安装了 TortoiseSVN 无论我做什么 它都不会连接到服务器上的存储库 我收到臭名昭著的错误 无法建
  • Lotus Notes/Domino 开发版本控制的最佳实践

    请分享您如何对 Lotus Notes Domino 开发进行版本控制 我想将所有脚本 视图 自定义表单 脚本库等放入我们的 SVN 存储库中 半自动方法也被接受 即 如果我找到一种方法来获取一个文件中表单的所有事件脚本 并能够将其作为整个

随机推荐

  • PHP生成带参数的小程序码

    生成小程序码并携带参数 我们平时在开发微信小程序时 会遇到如下场景 需要制作某个推广链接 然后需要生成一个专属小程序码 扫描这个专属二维码时 获取到推广的链接携带的参数跳转到指定的界面 这个看似很难 其实特别简单 阅读微信官方的接口就很容易
  • 使用JSON.parse()转化成json对象需要注意的地方

    相信大部分人都知道或者去百度检索都会得到将js中的字符串转化成json对象常见的3种方法 举例 var str name 小明 age 18 将字符串转化json对象 1 var json JSON parse str 2 var json
  • 一个完整的react router 4.0嵌套路由的例子如下

    react router 4 0以上的路由应用 在4 0以下的react router中 嵌套的路由可以放在一个router标签中 形式如下 嵌套的路由也直接放在一起
  • 可视化探索开源项目的 contributor 关系

    引语 作为国内外最大的代码托管平台 根据最新的 GitHub 数据 它拥有超 372 000 000 个仓库 其中有 28 000 000 是公开仓 分布式图数据库 NebulaGraph 便是其中之一 同其他开源项目一样 NebulaGr
  • python 函数、模块、包及import导入方法

    函数 将一组代码组织到一起 实现某种功能 模块 模块就好比工具包 里面的具体工具就好比函数 需要使用里面的函数 就需要导入这个模块 为实现某种逻辑将相关连的函数写在同一个文件里 使逻辑更清楚 这就是一个模块 在python中文件以 py 结
  • C++11新关键字default

    C 11添加了很多新特性 使C 看上去更加的灵活和面向对象 其中新关键字default值得我们关注一下 我们知道有时候当我们仅创建了有参构造函数后 如果你想调用无参构造函数编译是会报错的 因为一旦你自己定义了构造函数 系统的默认构造函数是被
  • 2022-04-17 Sass学习笔记(二) Sass的语法:变量,条件分支,循环,mixin

    文章目录 1 变量 常见使用场景 语法 示例 2 条件分支 常见使用场景 语法 示例 3 循环 常见使用场景 语法 1 for 指令 2 each 指令 示例一 for循环li节点的样式 示例二 each in节点的样式 4 混合 Mixi
  • maven下载地址

    http archive apache org dist maven binaries
  • 2019matlab安装

    本文转载自Matlab R2019a Win64位 迅雷下载链接 Yohaoa CSDN博客 matlab迅雷下载 和MATLAB 2019a安装教程和破解方法 附Crack文件 我爱分享网 1 下载安装包18G 迅雷磁力链 magnet
  • 前端之浅谈浏览器的垃圾回收机制和内存泄露

    前端之浅谈浏览器的垃圾回收机制和内存泄露 龙波帝国 博客园
  • 安装eclipse启动时报错

    1 在安装eclipse后 点击exe文件时 提示出现错误 记录在log文件中 因为log文件就是日志文件 可以方便我们排查错误 打开log文件 可以看到文件记录了每次出错的时间和错误栈信息 最新一次错误是 ENTRY org eclips
  • ‘cudaThreadSynchronize’ is deprecated

    Problem src gemm c In function time gpu src gemm c 232 9 warning cudaThreadSynchronize is deprecated Wdeprecated declara
  • C++程序中调用exe文件的一种方法

    我们在开发项目时 通常需要通过一个程序调用另一个程序 在这里介绍一中在C 程序中调用exe文件的方法 使用ShellExcecuteEx函数 使用ShellExcecuteEx相对于其他的调用exe的方法 例如 使用system函数 使用e
  • 区块链是生命体、经济体。未来的区块链世界离不开自己的价值尺度建设

    想知道更多区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 公有链和联盟链的本质不同 区块链受到大家广泛关注应该是2015年10月 那时候万向在上海搞了一场区块链国际峰会 因为万向在整个金融界比较有影响力 加上 经济学人 在1
  • 如何删除在System中打开的iso文件

    目录 问题 解决方法 弹出DVD驱动器 删除iso文件 问题 在打开iso文件后 我的电脑中突然出现了一个DVD驱动器 如图1 而且原来的iso文件也无法删除 会提示文件在System中打开 如图2 图一 图二 解决方法 弹出DVD驱动器
  • 使用ffmpeg 将MP4格式 或其他格式转为谷歌浏览器可以播放的MP4文件

    场景 在网页上传任意视频格式的文件后 调用系统的ffmpeg 命令对其格式 转化后 发现谷歌浏览器压根无法播放 原因 视频不光区分格式 同一格式还区分编码 对于扩展名相同的视频文件它们的视频的编码可能是不一样的 mp4格式的视频就有3种编码
  • 【bnlearn in Python】Python下载bnlearn包的一些问题

    贝叶斯网络小萌新 请大家多多指教多多关注 文章目录 bnlearn document 下载超时问题 下载指令 证明下载成功 bnlearn document bnlearn包的指南文件见链接 bnlearn document 下载超时问题
  • kmp(看毛片)算法

    别人的两篇博客 传送门1 传送门2 摘录 其中T为主串 P为模式串 其实就是在T中找P 其中next数组存的是 部分匹配值 部分匹配值 就是 前缀 和 后缀 的最长的共有元素的长度 以 ABCDABD 为例 A 的前缀和后缀都为空集 共有元
  • 如何安装使用IP广播?

    步骤一 连接设备到同个局域网 设备连接网络 所有的设备与服务器处于同个局域网内 测试时放在同个交换机内 步骤二 在服务器上安装广播软件 再服务器上安装 数字网络广播系统软件 运行目录下的 Setup exe 文件 一直下一步直到完成 再服务
  • TortoiseSVN使用方法

    安装和配置 TortoiseSVN的下载地址为 http tortoisesvn net downloads html 有32位和64位的版本 一定要根据自己的操作系统下载对应的版本 最好安装一个简体中文的Language packs 可以