How to use SourceGear DiffMerge in SourceSafe, TFS, and SVN【项目】
What is DiffMerge
DiffMerge is yet-another-diff-and-merge-tool from the fine folks at SourceGear. It’s awesome. It’s head and shoulders above whatever junky diff tool they provided with your source control platform, unless of course you’re already using Vault. Eric Sink, the founder of SourceGear, wrote about it here. By the way, Eric’s blog is easily one of the most valuable I’ve read, and while it doesn’t get much love these days, there’s a lot of great stuff there, and it’s even worth going back and reading from the beginning if you haven’t seen it.
Are there better diff tools out there? Sure, there probably are. I’m sure you have your favorite. If you’re using something already that works for you, great. DiffMerge is just yet another great option to consider when you’re getting started.
You sound like a sleazy used car salesman
Yeah, I probably do, but I don’t work for SourceGear and have no financial interest in their products. I’ve just been a very happy user of Vault and DiffMerge for years. And it if increases Vault adoption, both among development shops and development tool vendors, it will make my life easier.
But when I go to work on long-term contracts for large clients, they already have source control in place that they want me to use, which is OK, but when I need to do some merging, it starts getting painful. I want it to tell me not just that a line changed, but exactly what in that line changed. I want to it actually be able to tell me the only change is whitespace. I want it to offer me a clean and intuitive interface. Crazy, I know.
Not a huge problem because DiffMerge is free, and it can plug into just about any source control system, replacing the existing settings. However those settings can be tricky to figure out, so I figured I’d put together a cheat sheet of how to set it up for various platforms.
Adding DiffMerge To SourceSafe
Let’s start off with those in greatest need, ye old SourceSafe users. First and foremost, I’m sorry. We all feel bad that you are in this position. SourceSafe was great for what it was, 15 years ago when file shares were considered a reliable data interchange format, but nobody should have to suffer through SourceSafe in this day and age. But don’t worry, adding in DiffMerge can add just enough pretty flowers to your dung heap of a source control system to make it bearable. Just like getting 1 hour of yard time when you’ve been in the hole for a week, it gives you something look forward to.
Anywho, let’s get started. First, whip out your SourceSafe explorer:
Here’s what we get for a standard VSS diff:
Ugh. So go to Tools->Options and go to the Custom Editors Tab. From there, the following operations:
Operation: File Difference
File Extension: .*
Command: [DiffMergePath]\diffmerge.exe –title1=”original version” –title2=”modified version” %1 %2
Operation: File Merge
File Merge: .*
Command: [DiffMergePath]\diffmerge.exe –title1=”source branch” –title2=”base version” –title3=”destination branch” –result=%4 %1 %3 %2
Now here’s our diff, much less painful:
But merging is where it really shines:
Thanks to Paul Roub from Source Gear for the details: http://blog.roub.net/2007/11/diffmerge_in_vss.html
Adding DiffMerge To Subversion
Obviously SVN is worlds better than VSS, but some of the standard tools distributed with TortoiseSVN are a little lacking. You might say “you get what you paid for,” but you’d only say that if you wanted to tick off a lot of smart and helpful people.
So let’s take a look at a standard diff in SVN:
Oof. I’ve used SVN on and off for years, and I still don’t understand what is going on here.
So let’s get this a little mo’ better. Right click your folder, and select TortoiseSVN->Settings. Go to the External Programs->Diff Viewer, and enter this External tool:
[DiffMergePath]\DiffMerge.exe /t1=Mine /t2=Original %mine %base
Switch over to the Merge Tool screen, and enter this External Tool:
[DiffMergePath]\DiffMerge.exe /t1=Mine /t2=Base /t3=Theirs /r=%merged %mine %base %theirs
And now our diffs look a little more familiar:
Thanks Mark Porter for the details: http://www.manik-software.co.uk/blog/post/TortoiseSVN-and-DiffMerge.aspx
Adding DiffMerge To Team Foundation Server
For years I dreamed of using TFS. I hoped that someday I would work at a company successful and cool enough to invest the money in a TFS solution. And then I actually got it, and uh, it’s seems like a nice enough fella, but it seems that its tendencies towards megalomania have really had some negative consequences on the end-user experience.
Given that, after decades of technological advancement in source control, the TFS diff tool is pretty much just the same ugliness as SourceSafe:
Get your spelunking helmet on, and we’ll go digging for the settings in TFS to change this.
- Open up Visual Studio and select Tools->Options
- Expand the Source Control group, and select Visual Studio Team Foundation Server
- Click the Configure User Tools button
Enter the following tool configurations:
Operation: Compare
Extension: .*
Command: [DiffMergePath]\DiffMerge.exe
Arguments: /title1=%6 /title2=%7 %1 %2
Operation: Merge
Extension: .*
Command: [DiffMergePath]\DiffMerge.exe
Arguments: /title1=%6 /title2=%7 /title3=%8 /result=%4 %1 %2 %3 (Corrected, thanks to Rune in the comments!)
Thanks to James Manning for the details: http://blogs.msdn.com/b/jmanning/archive/2006/02/20/diff-merge-configuration-in-team-foundation-common-command-and-argument-values.aspx
The End
So that’s all it takes to make your source control life a little bit easier. Even if you don’t prefer DiffMerge, I’d suggest you find one you do like, because the built-in tools are usually pretty bad. Diffing and merging is hard enough as it is, don’t waste precious brain cells on substandard tools.
How to use SourceGear DiffMerge in SourceSafe, TFS, and SVN【项目】的更多相关文章
- 比较TFS与SVN,你必须知道的10点区别
相比SVN,对于TFS的优点我有以下几点看法,供大家参考: 1. 总体比较: TFS是一个应用软件生命周期管理(ALM)软件,是一个软件研发平台产品,其功能覆盖了软件研发过程中的所有环节(包括源代 ...
- 在TFS中获取项目,获取最新和上传(迁入)
一.在TFS中获取项目: (1)team (2)connect to team.... (3)选择服务地址,然后close (4)然后映射本地文件夹下载项目 (5)mapped添加映射,在map下就可 ...
- vs2013搭建团队版本控制 TFS、SVN
项目使用vs2013开发,之前使用过svn进行版本控制,由于长时间未使用,记录备用. 一.TFS Team Foundation Server(TFS) 是微软提供的一个团队协同办公的管理工具,项目总 ...
- vs在微软官方tfs创建私有项目过程
谁也不是成天创建新项目,每次一创建就跟没干过这活似的,这次把它记下,再用的时候来翻,也希望能给别人点帮助. 上https://dev.azure.com/,tfs原来的网址会往这里跳,现在都在往dev ...
- TFS Build Silverlight项目的两个问题
1.The Silverlight 4 SDK is not installed. 打开对应的Build Definition,Process -> Advanced -> MSBuild ...
- 删除TFS中的项目
打开“Team Foundation Server 管理控制台”,选择应用层->团队项目集合->团队项目->点击项目集合名称,最后点击右侧出现的删除按钮
- 不同的source control下配置DiffMerge
TFS: 1. 打开Option -> Source Control -> Visual Studio TFS -> Configure User Tools; 2. 添加 .*, ...
- TFS API:二、TFS 代码查询工作项
TFS API:二.TFS 代码查询工作项 首先我们需要认识TFS的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection, ...
- TFS修改项目名称
引言 如何让TFS管理的项目更名后不丢失修改历史记录? 在工作中有时由于前期考虑不足,某个Project的名字在项目开发过程中需要修改以更准备表达它的功能.本文就对此进行抛砖引玉 操作 在Source ...
随机推荐
- Android下EditText的hint的一种显示效果------FloatLabelLayout
效果: 此为EditText的一种细节,平时可能用的不多,但是用户体验蛮好的,特别是当注册页面的项目很多的时候,加上这种效果,体验更好 仅以此记录,仅供学习参考. 参考地址:https://gist. ...
- 定时组件quartz系列<二>quartz的集群原理
1.基本信息: Quartz是一个开源的作业调度框架,它完全由java写成,并设计用于J2Se和J2EE应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它 来为执行一个作业而创建简单的或 ...
- java UncaughtExceptionHandler 处理线程意外中止
本文转自:http://peirenlei.iteye.com/blog/305079 Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个 ...
- 【转】Core Bluetooth框架之一:Central与Peripheral
原文网址:http://southpeak.github.io/blog/2014/07/29/core-bluetoothkuang-jia-zhi-%5B%3F%5D-:centralyu-per ...
- ubuntu 上更新安装 openoffice.org3的过程
方法一:手动安装1首先在“应用成程序--添加/删除”里卸载openoffice 2.4,可能openoffice.org 2.4 Draw因为关联而无法卸载,忽略,卸载其他几项.然后在中文官方网上下载 ...
- source 命令
作用: 当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录:这时就想到用source命令,如:source /etc/profile 介绍:source命令也称为“点命令”,也就 ...
- android 状态栏、标题栏、屏幕高度
1.获取状态栏高度: decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFram ...
- 第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承
前面有一篇对于常见元素的识别和操作的python自动化脚本,这一篇就接着聊下python的类继承,已经它的第三款unittest框架,和报告收集包HTMLtestRunner的应用. 还是直接上代码吧 ...
- [转载]字典树(trie树)、后缀树
(1)字典树(Trie树) Trie是个简单但实用的数据结构,通常用于实现字典查询.我们做即时响应用户输入的AJAX搜索框时,就是Trie开始.本质上,Trie是一颗存储多个字符串的树.相邻节点间的边 ...
- Arduino+RFID RC522 +继电器
博客园的第一篇博文就献给Arduino了.不知道能不能坚持自己喜欢的并且记录下来. 起码是个好的开始. 想实现一卡通代替钥匙开启电动车. 简单的原理,通过RC522模块读取一卡通的序列号,在程序中进行 ...