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