[RFC] usability of mercurial

Jordan Breeding jordan.breeding at mac.com
Tue Aug 30 14:50:57 CDT 2005


On Tuesday, August 30, 2005, at 02:24PM, Bryan O'Sullivan <bos at serpentine.com> wrote:

>On Tue, 2005-08-30 at 14:07 -0500, Jordan Breeding wrote:
>
>
>>  - Based on the above taking place at some point I think that it would
>> be nive if `hg log -v` could list "Added Files:", "Removed Files:",
>> "Renamed Files:", and "Modified Files:" whenever each type of
>> operation is present in that changeset.
>
>That information is not recorded, so it's somewhat expensive to figure
>out, particularly for deleted files (they just disappear from the
>manifest).

Would it be possible to record this information in the future?

>
>>  - It would also be nice in my opinion if mercurial had support for
>> directories.
>
>That's not going to happen.  The only case it is required for is empty
>directories, which are not very interesting.  For other cases, it's far
>more trouble than it is worth.
>
>	<b
>

While I agree that empty directories are not very interesting on their own I was hoping that having versioned directories would allow `hg add`, `hg copy`, `hg remove` and `hg rename` to not only operate on directories but either by default or have a flag to allow operation on everything underneath that directory.  So for a directory structure:

foo/foo/foo
foo/foo/bar
foo/bar/foo
foo/bar/bar

I would ideally like to be able to do `hg add foo` in the working dir and have it all added and versioned.  After that it would be nice to have similar tranparency on the command line with other commands: `hg rename foo/foo foo/foo_bar`.

Is the trade off in simplicity of only tracking files in mercurial worth not having features that some people would consider useful?  I only used svn for a short time while evaluating other, distributed options, but I found that having directories be versioned was quite nice.  I guess I just got spoiled (even in a short period of time) by being able to do:

svn add foo;svn commit -m "First commit";
svn mv foo/foo foo/foo_bar;svn commit -m "Two";

and then get this for a log (svn log -v):

r2 | jbb | 2005-08-30 14:43:53 -0500 (Tue, 30 Aug 2005) | 1 line
Changed paths:
   D /foo/foo
   A /foo/foo_bar (from /foo/foo:1)

Two
------------------------------------------------------------------------
r1 | jbb | 2005-08-30 14:42:30 -0500 (Tue, 30 Aug 2005) | 1 line
Changed paths:
   A /foo
   A /foo/bar
   A /foo/bar/bar
   A /foo/bar/foo
   A /foo/foo
   A /foo/foo/bar
   A /foo/foo/foo

First commit
------------------------------------------------------------------------

I personally think that it would be great if mercurial supported things like the above, but if it absolutely won't happen I will just have to deal with it not being there, afterall those features are not required, they are just quite nice to have.

Jordan


More information about the Mercurial mailing list