Stephen Lau wrote:
> Richard Lowe wrote:
>> Richard Lowe wrote:
>>> Stephen Lau wrote:
>>>> Richard Lowe wrote:
>>>>> Can someone else build a pre-winchester onnv, then bringover the 
>>>>> Winchester putback and see if they see similar?  This is with the 
>>>>> current SUNWmercurial Danek put up, not 0.9.3, or 0.9.4 (I'm 
>>>>> working on updating our stuff for 0.9.4, and getting 0.9.4 packaged 
>>>>> for us, and into sfwnv (probably) now...).
>>>>
>>>> Ka-boom.  I was able to reproduce part of this (list of files 
>>>> below). Though unlike Rich, I didn't have any changes to commit.  
>>>> Attempting a 'hg commit' just shows "(nothing changed)", and 'hg st' 
>>>> doesn't show any changes.
>>>>
>>>
>>> Yeah, everyone can do that bit.  Now, why do I see them in the 
>>> dirstate, and why can I commit that junk?  'hg st -mard' doesn't show 
>>> you !'d files from the source part?
>>
>> Ok, what state does it think files that were previously not controlled 
>> are in?
>>
>> hg st <one of the libsqlite objects>
>> hg debugstate | grep '/libsqlite/'
>>
>> Do you see them in the dirstate in either case?  I do, and a rebuild 
>> of libsqlite will show the make.state as modified (and it will commit 
>> it, if I commit...)
>>
>> -- Rich
> 
> Yup, I was able to reproduce this fully now.  Here's what I did:
> hg clone -r 4519 ssh://anon at hg.opensolaris.org/hg/onnv/onnv-gate
> ran a full build (probably unnecessary - it might be sufficient to just 
> build usr/src/cmd/svc/configd/sqlite).
> hg pull -u -r 4520
> bldenv -d developer.sh
> cd usr/src/lib/libsqlite
> dmake all
> hg status -mard
> 
> so hg status now shows:
> [stevel at zday:libsqlite] 502$ hg st -mard
> M usr/src/lib/libsqlite/.make.state
> 
> So it thinks .make.state is tracked when it shouldn't be.
> 
> This should probably be marked as a stopper - committing things which 
> shouldn't be under revision control is bad.
> 
> cheers,
> steve
> 

Here's an even simpler test case to reproduce that doesn't involve 
onnv-gate (so should be easier for mpm to debug):

$ hg init hg-parent
$ cd hg-parent
$ mkdir dir
$ cd dir
$ cat <<EOF >a.c
 > #include <stdio.h>
 > int main() {printf("hello world");}
 > EOF
$ hg add a.c
$ hg commit -m "Added a.c"
$ cd ../..
$ hg clone hg-parent hg-child
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd hg-child/dir
$ cc a.c
$ cd ../../hg-parent
$ hg rename dir newdir
copying dir/a.c to newdir/a.c
removing dir/a.c
$ hg commit -m "Renamed dir->newdir"
$ cd ../hg-child
$ hg pull -u
pulling from /home/stevel/hg-parent
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
not in dirstate: dir/a.out!
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ cd newdir
$ cc a.c
$ hg st
M newdir/a.out


So it now thinks a.out is under SCM control when it shouldn't be.

cheers,
steve
-- 
stephen lau // stevel at sun.com | 650.786.0845 | http://whacked.net
opensolaris // solaris kernel development

Reply via email to