I've one question about general DVCS, including Git and Hg.
In both Git and Hg merge tracking is done at the "commit" level instead of the "file/directory" level.
One of the "side effects" is that you can't easily do a "partial merge":
- You've modified 30 files in your branch "feature_branch_x"
- You want to merge ONLY the files under (let's say) /kernel/gui
With "item based merge tracking" (Perforce, ClearCase, Plastic SCM <= 3.0) you can just select a few files to merge, then checkin, then later repeat the merge and the pending files will show up.
With Hg, Git: once you merge (there're ways to keep files out without being merged) the "tracking" is set and if you repeat the merge no candidates to merge are left.
My question is how do you feel about it??
Are there cases where you feel "partial merge" is mandatory? Can you live without it? (merge with commit/cset level tracking is much faster).
DISCLAIMER: I work for Plastic SCM and we've moved to "cset" level tracking in 4.0, but we're wondering whether it could be a good idea to stay with "item level merge tracking" or even allow both.