I use TFS a *lot* in my day to day work. It is the enterprise SCM tool of
choice. I have recently made the switch to Mercurial (after some recent
investigation of Git and Mercurial) for my personal work projects.

I am not going to go into theory though. TFS merges and conflict resolutions
are a pain in an enterprise team environment and are a serious time waster.
Hg(Mercurial) and probably GIT just do it better. The offline support is
just better.

Now I wont advocate use of Mercurial in my current enterprise
(Mercurial/DVCS requires some knowledge and discipline in its current form).
Integration with work items, VS 2010 integration etc.. is just way too good
and it’s the default choice. Make no mistake tho, Mercurial (and GIT) are
better at source control management. You do need a bit of re-education
around how the workflow of should happen (ie. When do I checkin, push, pull
etc...) but in the end, this method is a good indicator of how the future of
SCM (IMHO) will shape up.

I recently investigated GIT/Mercurial after Mr. Stovell himself gave me a
good reason to do so but I was pragmatic around its usage. I was (and still
am) a subversion fan for my personal stuff but Mercurial does do it better.
As a dev, its odd to be excited about a new way of SCM. Geeky, but true.

- Glav

-----Original Message-----
From: [email protected] [mailto:[email protected]]
On Behalf Of Paul Stovell
Sent: Thursday, 4 November 2010 6:11 PM
To: ozDotNet
Subject: RE: Why DVCS, was Re: TFS Feedaback? Anyone moved away from it?

>> Broken how?

Let's say you decide to implement a new feature in a TFS branch. You branch
the trunk to FeatureX. Over the course of a week, you make 13 check-ins to
that branch. During this time, the rest of your team made another 19 changes
to the trunk. The feature is now stable, so you decide to merge. In TFS,
this is done by doing a giant compare on the two directories, AND'ing them
together, and seeing what falls out. You aren't just merging a check-ins -
you're merging the state of two file system directories after 32 different
check ins in a single attempt - you better get it right, because if you get
90% of the way in and screw it up, it will take a long time to recover. 

When you're done merging, you're left with  a huge pending check in that
touches every file involved in those 13 commits. You have to come up with a
nice paragraph that sums up the 13 changes you're mushing in, because when
you delete the branch, you'll probably lose the history of those branched
changes. You should also remember to associate it with all of the work
items/bugs/stories those 13 check ins touched, since this huge check in is
really associated with all of them. 

In Mercurial it works different. You'd pull the 19 changes made to the trunk
to your local repository - they'd be replayed, one-by-one, against your
files. You'll still do the merges (leaving alone that Mercurial does a much
better job of merging than TFS out of the box), but since you're dealing
with one or two commits at a time, the merges are pretty simple, and if you
screw up, you don't have to start the whole thing again. Once you've merged
the trunk into your branch, you'd just push everything back to trunk. Now
all the changes are replayed against trunk, and trunk has all 32 commits,
with their history and dates exactly as you wrote them when you checked them
in during the week. It's a much more elegant model. 

Paul

-----Original Message-----
From: [email protected] [mailto:[email protected]]
On Behalf Of silky
Sent: Thursday, 4 November 2010 4:51 PM
To: ozDotNet
Subject: Re: Why DVCS, was Re: TFS Feedaback? Anyone moved away from it?

On Thu, Nov 4, 2010 at 5:40 PM, Paul Stovell <[email protected]>
wrote:
> Hi Silky,
>
> I think in some ways you have to experience it - the proof is in the 
> tasting. But here are some things I like about it that work even for 
> small, local teams.
>
> 1.       How many times did you make a small change, then delete it 
> and try something else, only to realize that you didn't check in 
> during that time since it wasn't "ready" to share with the team? Since 
> most of your interaction with source control is just to your hard 
> disk, you're more likely to use it. On my current project with 
> Mercurial I'm averaging a commit every 10 minutes - lots of small changes.

Never. I don't ever try the wrong thing.

Seriously though, as I said to Joseph, I agree this is a legitimate benefit,
and I like it.


> 2.       How many times have you done an SVN update/TFS "get latest", 
> tried to merge, made a mistake, and lost changes in the process? With 
> Mercurial that doesn't happen -it forces you to commit your local 
> changes first, then merge them with the server changes. If it fails, 
> you can roll it back and try again until you're successful - you never
lose changes.

This I've legitimately never done. Merging with SVN is pretty nice, at least
I think so. You just go around resolving conflicts. Not so tough. Don't
disagree that it could be better, but I don't think there is an issue here
particularly.


> 3.       Merging in DVC's works fantastically. By comparison the 
> merging approaches of TFS and Subversion are broken. To even use a 
> DVCS you're using branching and merging, since the server and your 
> local machine are entirely different repositories. In TFS and SVN, 
> branching and merging is a scary concept only used in the most dire of
circumstances.

Broken how?


> Those advantages apply in the most connected corporate environment - 
> when I'm forced to use TFS I wish it had better support for these three
features.
> Prior to using Mercurial I just accepted that the way SVN made me work 
> was fine, and the occasional loss of code or busted merge was a fact of
life.
> Now I find it frustrating to work with TFS/Subversion and sometimes 
> wonder if a folder full of "copy of .".zip files would be more 
> effective J
>
> There are other advantages to do specifically with open source 
> projects - for instance, instead of sending a patch, people can put 
> their repository online to share with others, and you can cherry pick 
> the changes you want from them. The patching system really fails once a
patch gets a little old.

Right, I'm not interested in these, and neither are the majority of small
enterprises, I would venture. I don't deny it's a benefit, and it's a good
one, but not one that I care about.

Anyway, I do appreciate these comments, and I may actually take a look,
having been slightly convinced.


> Paul

--
silky

http://dnoondt.wordpress.com/

"Every morning when I wake up, I experience an exquisite joy - the joy of
being this signature."



Reply via email to