doubts on revert, status and diff... a bug?

Alessandro Dentella sandro at e-den.it
Mon Feb 4 03:27:57 CST 2008


In my opinion 'hg revert' behaves differet from what inline help says for
permission

On Sat, Feb 02, 2008 at 10:02:27PM +1100, Bela Babik wrote:
> > I thought revert would make the version of header_check equal to the rev
> > n. 1... shoudn't it?
> 
> hg revert affects only the working copy.

I know. Working dir is at changeset 4. If I revert 'header_checks' to
revision 1 as in:

   www:/etc/postfix# hg revert -r 1 header_checks

I expect contet of file 'header_check'to change
but this shows that nothing changed, so no real diff between 
www:/etc/postfix# hg st .
www:/etc/postfix# 

so this is a complete example:
-----------------------------

 $ hg init
 $ touch perm.test
 $ ll perm.test
-rw-r--r-- 1 sandro sandro 0 2008-02-04 10:13 perm.test
 $ hg add perm.test 
 $ hg ci -m 644 perm.test 
 $ chmod 755 perm.test
 $ hg st
M perm.test
 $ hg ci -m 755 perm.test
 $ hg log
changeset:   1:299473ef717d
tag:         tip
user:        sandro
date:        Mon Feb 04 10:14:29 2008 +0100
summary:     755

changeset:   0:9443e55c06fd
user:        sandro
date:        Mon Feb 04 10:14:01 2008 +0100
summary:     644

 $ ll perm.test 
-rwxr-xr-x 1 sandro sandro 0 2008-02-04 10:13 perm.test
 $ hg st
 $ chmod 644 perm.test                ### I change manually -> hg realizes that
 $ hg st
M perm.test
 $ chmod 755 perm.test
 $ hg st
 $ hg revert -r 0 perm.test           ### I revert, perms don't chage
 $ ll perm.test
-rwxr-xr-x 1 sandro sandro 0 2008-02-04 10:13 perm.test
 $ hg st
 $ hg st --rev 0
M perm.test

The last lines show that permission are not restore but hg revert -h says
they should revert::

    If a file has been deleted, it is restored.  If the executable
    mode of a file was changed, it is reset.


sandro
*:-)



> Hi all, I'm using hg to keep trace of modification in some conf file, I see
> modifications that are just on dates (I guess) that I can't hide as I'd like
> (suggestions are wellcome).
> 
> in the following anyhow I'd expect revert to work but it does no do what I'd
> expect...
> 
> www:/etc/postfix# hg st --rev 1 .
> M header_checks
> M main.cf
> M master.cf
> M relay_domains.db
> www:/etc/postfix# hg diff -r 1
> www:/etc/postfix#
> 
> this means no diffs are between rev N. 1 and working dir
> I deduce that the 'M' status above is not in data, just in dates: correct?
> 
> 
> www:/etc/postfix# hg revert -r 1 header_checks
> www:/etc/postfix# hg st .
> www:/etc/postfix# hg st --rev 1 .
> M header_checks
> M main.cf
> M master.cf
> M relay_domains.db
> 
> I thought revert would make the version of header_check equal to the rev
> n. 1... shoudn't it?
> 
sandro
*:-)


More information about the Mercurial mailing list