Hi Guido, *,

On Thu, Jul 30, 2009 at 8:15 PM, Guido Ostkamp<[email protected]> wrote:
> Hi Christian,
>
>>> This costs tons of additional disk space and CPU time because you have to
>>> rebuild everything from the ground up
>>
>> This is not true for any filesystem that supports hardlinks. Do a clone
>> only, then an update. Only when you don't clone it completely, you have to
>> rebuild everything (and indeed, that is rather slow, and furthermore you
>> won't have history for anything that happened after the revision you based
>> your clone on, so this is not what you usually want).
>
> perhaps you did not fully understand what I mean.

Yes, I indeed did misunderstand, but still it is great to have it
mentioned and cleared up.
As the main complain "cloning is slow" is (so far in my experience)
always caused by usiing wrong options/implicitly "disallowing"
mercurial to use hardlinks (and then of course cloning can never be
faster than your disk shoveling bits around) and forcing it to go
through ~all the changesets.

It might not be obvious that there's such a big difference between
just cloning the whole thing and then update to the desired revision
and cloning with the revision as argument. Rene did fall in that
"trap" and loudly complains. So this is a very likely source of FUD,
so I felt the urge to mention it.

> When you have cloned a
> remote repo to a local one, got a working tree and have already build it
> you've got tons of object files, libraries, executables etc. that are not
> under version control.
>
> Now, when you want a branch, the Mercurial way is to clone again from your
> local repo. This will not copy the aforementioned object files, libraries
> etc.

In that case I'd use plain cp and let it create hardlinks. OOo's build
system doesn't have problems with hardlinks or symlinks (I use ccache
with hardlinks all the time, and in cvs days I was using shadowtrees
(i.e. directoriy hierarchies where the "files" are symlinks).

> So you have to do the whole build / compilation again - unless you
> selectively copy that files into your freshly cloned repo - and even then
> you've doubled the disk space required for it.

For the OOo-case. selective copying is also easy, as the generated
files are all in a module-subdirectory (for i in <modules>; do cp/mv
...)

But I'm not sure I'd create a seperate clone for it, but instead do it
in the old tree....

> In Git I can simply switch the branch and then some sources & makefiles
> files are changed, removed or added as needed.

... as you seem to prefer with git.

But I must admit that my experience with DVCS is rather limited, I
didn't use any advanced features.

> [...]
> I hope you don't get the feeling that I'm strictly against Mercurial - I'm
> definitely not. [...]

No, I'm glad that you're trying to provide founded feedback and even
more important it really helps to clear up some misconceptions and
misunderstandings.

ciao
Christian

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to