[issue1542] Problem with hg status with respect to inotify.sock

Martin mercurial-bugs at selenic.com
Sat Mar 7 20:30:26 CST 2009


New submission from Martin <blais at furius.ca>:

Allright, this bug is serious, has been occurring to me at least enough times
(about 10 times at the very least, in real usage cases, it's very annoying) that
I'm taking the time to log it in, and it's seriously tickling my curiosity and
reducing my confidence in hg.

Easy to reproduce::

  tangerine:~$ mkdir myrepo
  tangerine:~$ cd myrepo
  tangerine:~/myrepo$ hg init
  tangerine:~/myrepo$ cp -r ../tmp .
  tangerine:~/myrepo$ hg status
  ? tmp/emacsrc
  tangerine:~/myrepo$ mv tmp ../tmp
  tangerine:~/myrepo$ hg status
  ? tmp/emacsrc                         <------ What's going on?
  tangerine:~/myrepo$ ls -l
  total 0
  tangerine:~/myrepo$ 

What's going on here? The directory is removed!

Note that 

1) I moved a directory into the repo
2) I used mv to move it away.


If I use a file instead of a directory, the problem does not occur:

  tangerine:~$ mkdir myrepo
  tangerine:~$ cd myrepo
  tangerine:~/myrepo$ hg init
  tangerine:~/myrepo$ cp ../.emacs emacsrc
  tangerine:~/myrepo$ hg status
  ? emacsrc
  tangerine:~/myrepo$ mv emacsrc  ../tmp
  tangerine:~/myrepo$ hg status
  tangerine:~/myrepo$ 


Also, if I use 'rm' instead of 'mv', the problem does not occur either!

  tangerine:~/myrepo$ hg init
  tangerine:~/myrepo$ cp -r ../tmp tmp
  tangerine:~/myrepo$ hg status
  ? tmp/emacsrc
  tangerine:~/myrepo$ rm -rf tmp
  tangerine:~/myrepo$ hg status
  tangerine:~/myrepo$ 

Ok now I'm going a bit nuts... let's try without using hg status::

  tangerine:~/myrepo$ hg init
  tangerine:~/myrepo$ cp -r ../tmp tmp
  tangerine:~/myrepo$ mv tmp ../tmp
  tangerine:~/myrepo$ hg status
  tangerine:~/myrepo$ 

Allright, electrons are still flowing. Let's try to diff the repo before and
after, to see if something is kept in .hg::

  tangerine:~$ mkdir myrepo
  tangerine:~$ cd myrepo
  tangerine:~/myrepo$ hg init
  tangerine:~/myrepo$ cd ..
  tangerine:~$ cp -r myrepo myrepo.orig
  tangerine:~$ diff -qr myrepo myrepo.orig   <---- clean diff
  tangerine:~$ cd myrepo
  tangerine:~/myrepo$ cp -r ../tmp tmp
  tangerine:~/myrepo$ hg status
  ? tmp/emacsrc
  tangerine:~/myrepo$ mv tmp /tmp/bleh
  tangerine:~/myrepo$ hg status
  ? tmp/emacsrc                   <------ problem reproduced
  tangerine:~/myrepo$ cd ..
  tangerine:~$ diff -qr myrepo myrepo.orig
  Only in myrepo/.hg: inotify.sock
  tangerine:~$ 

Only a socket is there. I'll delete it, diff again, and try status again::

  tangerine:~$ cd myrepo/.hg
  tangerine:~/myrepo/.hg$ ls
  00changelog.i  inotify.sock  requires  store
  tangerine:~/myrepo/.hg$ rm inotify.sock 
  tangerine:~/myrepo/.hg$ cd ../..
  tangerine:~$ diff -qr myrepo myrepo.orig
  tangerine:~$ cd myrepo
  tangerine:~/myrepo$ hg status
  
The problem is gone.

With a larger directory, when I reproduce the problem and remove it, I also got
this error message:

  tangerine:~$ diff -qr myrepo myrepo.orig
  File myrepo/.hg/inotify.sock is a socket while file
myrepo.orig/.hg/inotify.sock is a socket


Does someone have any idea about this? 
It is related to inotify.sock.

It also happens if you use hg status with no files, and then move in some files,
a further hg status does not see them either.




Setup details
-------------

Ubuntu 8.04


tangerine:~/myrepo$ hg --version
Mercurial Distributed SCM (version 55bd03e2e13c)

(latest hg-stable as of 2009-03-07 213012)


Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49) 
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

----------
messages: 8766
nosy: blais
priority: bug
status: unread
title: Problem with hg status with respect to inotify.sock

____________________________________________________
Mercurial issue tracker <mercurial-bugs at selenic.com>
<http://www.selenic.com/mercurial/bts/issue1542>
____________________________________________________



More information about the Mercurial-devel mailing list