`
ictch
  • 浏览: 135449 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

让TortoiseSVN使用类似TortoiseCVS的文件冲突解决方式

阅读更多

问题的产生:

对于采用Copy-Modified-Merge方式的版本控制系统,冲突的管理和解决是非常重要的。
目前公司的一个项目由于系统的版本升级,系统的源代码在开发过程中有大量的文件重命名操作,原有的CVS不支持文件重命名,每次都需要删除原有文件,再重新导入新的文件,导致文件更改历史丢失;为了解决这个问题,我们把版本控制工具从CVS改成了Subversion,客户端从TortoiseCVS改为了TortoiseSVN;由于TortoiseCVS和TortoiseSVN的使用极为相似,因此转移后大家在使用上并没有遇到什么问题——除了对文件冲突的解决方式;

问题的详细分析:
在文件的合并发生冲突时,冲突文件主要有以下几个版本:
Base:自己的工作复本中该文件的原始版本
Mine:自己的工作文件
Theirs:版本库中的最新文件
Merged:在TortoiseSVN中自动合并后的文件,在该文件中,用如下方式标识了文件中发生冲突的部分(这种方式似乎是Unix世界的通用方式?):
<<<<<<< filename
    your changes
=======
    code merged from repository
>>>>>>> revision

在 TortoiseCVS 中,对冲突文件的合并是用Mine和Theirs进行比较进行的,合并后的文件即作为工作复本中冲突已解决的新文件;而在TortoiseSVN中,对于冲突的文件(比如ConflictFile.txt),会自动生成以下几个文件:

ConflictFile.txt.mine(自己的工作复本Mine)
ConflictFile.txt.rBaseRevision(原始版本Base)
ConflictFile.txt.rNewRevision(版本库中的新版本Theirs)
ConflictFile.txt(合并后的文件Merged)

TortoiseSVN 的冲突解决需要对以上文件进行比较合并,最终将所有的修改都合并到Merged版本中,然后将冲突设置为已解决;但是由于工作复本、版本库的新版本以及合并的目标分别存储在三个文件中,因此TortoiseSVN的冲突解决就需要使用支持三向比较(3-Ways)的比较/合并工具,比如TortoiseSVN内置的TortoiseMerge(免费),或者Araxis Merge(收费);原来我们在TortoiseCVS中使用的Beyond Compare就无法使用了,因为BC只支持对两个文件进行比较,在TortoiseSVN中使用Beyond Compare作为合并工具的话,就还需要手工作很多工作——大家就是对这一点非常不适应。

问题解决方案:
1.编写如下的批处理文件(注意将Beyond Comare的路径改为实际的路径):
"D:\Applications\DevTools\BeyondCompare2\BC2.exe" %1 %2
Del %3
Del %4
Del %2
Copy %1 %3
Del %1

2.在TortoiseSVN的Setting中选择合并工具(Merge Tool)页面,设置使用外部合并工具(External),在命令行中设置外部合并工具的命令行如下:
"D:\Applications\DevTools\TortoiseSVN\TSVNMerge.bat" %mine %theirs %merged %base

3.在使用TortoiseSVN编辑冲突文件时,系统会自动打开冲突文件的Mine版本和Theirs版本进行比较合并,用户将所有的修改合并到Mine版本中,当手工编辑冲突完成后,将自动用合并后的Mine版本替代Merged版本,并删除其他文件;这时使用TortoiseSVN的“标识为已解决”,即可进行提交。

此方法可以使用任何支持双向文件比较/合并的工具。

解决方案存在的问题:
这不是一个完美的解决方案,由于使用的是功能有限的批处理文件,因此存在以下问题:
1.无法判断用户是否进行了合并操作,如果没有进行合并操作,也会进行后面的删除和复制操作;
2.有时候会发生复制时提示Merged文件无法修改的情况,这可能是由于比较工具尚未完全退出造成的;

上面的问题可以通过自己编写程序解决,第一个问题通过用文件监视器监视Mine文件来判断是否进行了修改;第二个文件可以通过监视比较工具的进程进行判断。

 

分享到:
评论

相关推荐

    TortoiseCVS和TortoiseSVN使用手册

    3. **版本控制操作**:TortoiseCVS提供了诸如"提交"(记录本地更改)、"更新"(同步远程更改)、"合并"(解决冲突)和"标签"(保存特定版本)等功能,确保了代码版本的有序管理。 二、TortoiseSVN详解 1. **...

    Tortoise SVN 版本冲突处理

    1. **启动冲突解决程序**:右击冲突文件,选择“TortoiseSVN”-&gt;“Edit conflicts”。这将打开一个专门用于处理冲突的编辑器。 2. **查看冲突详情**:冲突解决编辑器的界面分为三部分:上方左边显示的是服务器版本...

    源代码管理工具 TortoiseCVS TortoiseGit TortoiseHg TortoiseSVN 绿色集成版

    TortoiseCVS (已包含CVSNT) TortoiseGit (已包含GIT) TortoiseHg TortoiseSVN 鼠标右键"以管理员身份运行"点击green.cmd 安装及可。立即生效。 如果鼠标右键中没有CVS菜单,请安装 VC 运行库。 WIN10X64下...

    TortoiseSVN使用教程[多图超详细]

    8. 合并(Merge):当从一个分支合并到另一个分支时,TortoiseSVN能够帮助用户解决冲突,确保代码的平滑整合。 TortoiseSVN还支持多种协议,包括***、svn+ssh://、***和***等,这使得它能够连接到不同类型的服务器...

    TortoiseSVN日常操作指南

    **解决合并冲突**是指处理因多个用户同时修改同一文件而导致的冲突。这需要手动审查冲突部分并作出决定。 ##### 4.17 分支/标记 **分支/标记**是指创建项目的新分支或标记特定版本。这有助于管理和组织项目的不同...

    tortoiseSVN权限文件的配置

    ### TortoiseSVN权限文件的配置详解 #### 一、TortoiseSVN与权限配置概述 TortoiseSVN是一款非常流行的版本控制系统客户端软件,主要用于管理代码版本控制。其支持Subversion(SVN)协议,能够帮助开发团队有效地...

    tortoiseSVN安装包下载

    5. **强大的冲突解决**:当多人同时修改同一文件时,TortoiseSVN提供工具帮助解决冲突。 6. **备份和恢复**:可以轻松地将仓库备份或恢复到特定版本。 7. **多语言支持**:包括简体中文在内的多种语言包,满足不同...

    TortoiseSVN-1.14.5中文使用手册

    * 合并和解决冲突:可以合并和解决文件之间的冲突。 安装TortoiseSVN 安装TortoiseSVN需要满足以下系统要求: * 操作系统:Windows 7/8/10 * 处理器:Intel Pentium 4 或更高 * 内存:512MB 或更高 * 硬盘空间:...

    解决TortoiseSVN文件夹及文件图标不显示解决方法V1

    在使用TortoiseSVN的过程中,用户可能会遇到一个常见的问题:TortoiseSVN的文件夹和文件图标不显示。这通常是因为系统设置、软件冲突或者TortoiseSVN自身的一些配置问题导致的。本文将详细阐述如何解决这个问题,...

    TortoiseSVN安装文件含汉化文件及使用方法

    6. **解决冲突**:在多个人同时编辑同一文件时可能会发生冲突,TortoiseSVN提供了解决冲突的工具和指导。 7. **分支与合并**:支持创建分支进行独立开发,并在完成后将分支上的更改合并回主干,实现协同开发。 8. ...

    TortoiseSVN-1.6.7-zh_CN.rar_TortoiseSVN_TortoiseSVN-1.6_Tortoise

    TortoiseSVN是一款在Windows操作系统上运行的开源Subversion(SVN)客户端,它以图形用户界面的形式集成到文件资源管理器中,为开发者提供了一种方便的方式来管理和跟踪他们的代码版本。标题“TortoiseSVN-1.6.7-zh_...

    Tortoise SVN CVS 资源管理器图标修复工具

    自己编写的Tortoise SVN CVS 图标修复软件,可以恢复资源管理器上的SVN,CVS图标显示问题。

    TortoiseSVN中文翻译包也有

    - **强大的冲突解决**: 当多个用户同时修改同一文件时,TortoiseSVN会帮助用户解决冲突,提供可视化对比工具来辅助解决。 - **多语言支持**: 包括中文在内的多种语言翻译,使得全球用户都能无障碍地使用。 3. **...

    TortoiseSVN的1.8.8版本(x64)及汉化包

    3. **更强大的冲突解决工具**:当多人同时编辑同一文件时,TortoiseSVN提供了更直观的方式来解决冲突,用户可以清晰地看到不同版本的差异并进行合并。 4. **更好的文件比较功能**:支持多种文件类型的对比,不仅限于...

    TortoiseSVN客户端使用指南

    TortoiseSVN 客户端使用指南 TortoiseSVN 是一个基于 Subversion(SVN)版本控制系统的客户端工具,提供了图形化的界面来管理和维护版本库。下面是 TortoiseSVN 客户端使用指南的相关知识点: 版本控制 版本控制...

    VisualSVN Server和TortoiseSVN使用说明

    VisualSVN Server和TortoiseSVN使用说明 安装包: TortoiseSVN-1.7.12.24070-win32-svn-1.7.9 .msi VisualSVN-Server-2.5.9.msi ...9、冲突解决 10、锁定(当你在操作的时候不允许其他人操作) 11、解锁

    TortoiseSVN使用简介

    如果曾经使用过TortoiseCVS,那么这种操作方式会感觉非常熟悉。 SVN是一个集中式的版本控制系统,拥有备份服务器的功能。它允许用户将文件存储在一个中央 Repository 中,并且可以记录每次文件上传时的变更历史。...

    TortoiseSVN-1.8.5-zh_CN.pdf

    此外,TortoiseSVN还支持导入数据到版本库、检出工作副本、提交修改、更新工作副本、解决冲突、获得状态信息、查看差异、添加新文件和目录、复制/移动/重命名文件和文件夹、忽略文件和目录、清理等日常操作。...

    TortoiseSVN

     Subversion 使用二进制文件差异算法展现文件的区别,对于文本(人类可读)和二进制(人类不可读)文件具备一致的操作方式,两种类型的文件都压缩存放在版本库中,差异在网络上双向传递。  高效的分支和标签  分支与...

    TortoiseSVN中文使用教程.pdf

    TortoiseSVN允许用户管理文件和目录的版本,它与Subversion服务器交互,以实现版本控制的提交、更新、合并等操作。Subversion是一个版本控制系统,用来管理文件的历史版本,常用在软件开发工作中,以跟踪和管理源...

Global site tag (gtag.js) - Google Analytics