tags:

views:

110

answers:

2

There are similar questions on SO but I'd like some clearer answers here.

  1. How important is DVCS not littering your working folder with files? (Alternately is single file repository a big plus to you?)
  2. How important is cherry-picking functionality (choosing arbitrary changes instead of lineage of changes)?
  3. How important is the speed of DVCS?
  4. How important is the size of repository?
  5. How important are GUI, IDE plugins, etc.?
  6. How important is the blame tracking functionality?
  7. Any other features you consider important?
+1  A: 

warning: I settled with mercurial a year ago after quite a bit of research (switched from subversion).

.1. How important is DVCS not littering your working folder with files? (Alternately is single file repository a big plus to you?)

not littering: very useful. simple tasks are simple: grep -re expr * was useless with svn.

single-file repository: probably quite fragile, so not a plus at all.

.2. How important is cherry-picking functionality (choosing arbitrary changes instead of lineage of changes)?

agonized over this one, turns out hg wants a different workflow, I no longer see cherry-picking as a a requirement, or even a (big) bonus.

.3. How important is the speed of DVCS?

a lot, of course, even though not as much as with centralized ones. what I'm talking about:

svn up
# hack hack hack
svn up
# resolve conflicts
svn ci
# oops, someone else has commited already!
svn up
# resolve the same conflicts again!
svn ci
# oops! ...

versus

hg pull -u
# hack hack hack
hg ci
hg pull -u
hg merge
# resolve conflicts
hg ci
hg push
# oops... well, there'll be zero conflicts this time
hg pull
hg merge
hg ci
hg push

.4. How important is the size of repository?

a lot. you'll have as many repositories as you'll have working copies.

.5. How important are GUI, IDE plugins, etc.?

depends on your preferences. I'm a command line junkie.

.6. How important is the blame tracking functionality?

how often do you need to know "when and why did this appear here?"

.7. Any other features you consider important?

efficiency of the network protocol(s) (pull/push speed over network)?

just somebody
+1  A: 

1. How important is DVCS not littering your working folder with files? (Alternately is single file repository a big plus to you?)

I don't care if it's a single file or a bunch of files under a single folder, but I hate having files/folders scattered all over the place.

2. How important is cherry-picking functionality (choosing arbitrary changes instead of lineage of changes)?

I personally almost never use cherry-picking. Small incremental merging is all I need 99% of the time.

3. How important is the speed of DVCS?

Extremely important. It's easy to underestimate how much more pleasant it is working with a snappy system until you go back to a slow one.

4. How important is the size of repository?

Hard drives are cheap so I don't really care as long as it's reasonable. However if a larger repository is going to slow down checkouts or clones then it affects point 3 and becomes important.

5. How important are GUI, IDE plugins, etc.?

A GUI is only important if the CLI is bad, and if the CLI is bad I'll probably avoid the system entirely unless I have to use it for some reason.

6. How important is the blame tracking functionality?

If you mean finding out "who changed this line last" I don't usually care, but if you mean "what version was this line last changed in" then it's more important.

7. Any other features you consider important?

Here are a few:

Built-in bisection

The first time you track a bug down in 20 minutes instead of 3 hours because you can easily find the changeset that introduced it you'll never be able to live without bisection again. This is also only useful if the VCS is fast. Trying to bisect with SVN over a weak wifi connection with a big repository is an exercise in frustration.

Merge tracking

It's 2009, I shouldn't have to waste time figuring out the MRCA of two changesets I want to merge. My VCS should be able to do that for me except in some extreme cases.

Easily extensible

Being able to extend the functionality with plugins should be easy. No one is going to be able to think up everything someone might want to do with a VCS, so it should be easy to add functionality.

Steve Losh