bugGNU Octave - Bugs: bug #53508, "untracked file differs"...

 
 

bug #53508: "untracked file differs" complication checking out tagged release-4-2-2

Submitter:  Dan Sebald <sebald>
Submitted:  Wed 28 Mar 2018 09:55:10 PM UTC
   
 
Category:  Configuration and Build System Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Build Failure
Status:  Invalid / Not an Octave Bug Assigned to:  None
Originator Name:  Open/Closed:  * Closed
Release:  * dev Operating System:  * GNU/Linux
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Wed 28 Mar 2018 11:53:50 PM UTC, comment #7: 

Yeah, a hindsight-is-20/20 predicament.  A couple other approaches would be

build-aux/move-if-change-oct --> wherever

to avoid the clash with the original

build-aux/move-if-change

or rather than storing the executable in build-aux/ somehow generate an executable path via ./bootstrap that includes the path for the move-if-change executable.  Not sure either of these ultimately avoids the same scenario.

Dan Sebald <sebald>
Wed 28 Mar 2018 11:36:25 PM UTC, comment #6: 

The symlink is not a constant, if a user runs ./bootstrap --gnulib-srcdir=/path/to/other/gnulib, the symlink will point there.

The correct state is that build-aux/move-if-change is not stored in the repository. It's unfortunate that previous revisions have it in their tree, but that's life.

Mike Miller <mtmiller>
Group Member
Wed 28 Mar 2018 11:18:39 PM UTC, comment #5: 

I get the point, but it's still odd that someone has to remove a file that Octave built in order to make the source control system function on historical versions.  Yes, just delete the build-aux/move-if-change file.  Principle-wise, it means one is doing

hg purge --all
hg checkout release-4-2-2

anyway if the goal is to avoid deleting all the object files and save time recompiling.

The alternative is that

hg checkout release-4-2-2
hg checkout dev

will have lost the move-if-change link so one would have to do

./bootstrap
make

Would that mean recompiling all the object files?

Also, the executable move-if-change is with the repository after cloning.  Can Mercurial just store a symbolic link in its record?  If so, then build-aux/move-if-change could be removed from .hgignore and it would work whether it's a link or actual file.

Dan Sebald <sebald>
Wed 28 Mar 2018 10:25:51 PM UTC, comment #4: 

Yes it is desired. I run 'hg clean' all the time (which is an alias for 'hg purge'). The point of the .hgignore list is that the source tree should show up as "clean" even when Octave is fully built.

'hg clean --print' or 'hg status' should only show unknown files that are truly unexpected, like a newly added .m file, a .rej file from a patch command, an octave-workspace file, or some image file from some manual testing. 'hg clean' should not delete built files that are expected to be there after 'bootstrap' or 'make'. That is what 'hg clean --all' is for.

Mike Miller <mtmiller>
Group Member
Wed 28 Mar 2018 10:20:06 PM UTC, comment #3: 

OK, "purge --all" rather than "purge".  Apparently the --all goes after files in the .hgignore list.  Why is


^build-aux/move-if-change$


in the .hgignore file?  From a developer perspective, running "hg purge" isn't necessarily a desired thing.

Dan Sebald <sebald>
Wed 28 Mar 2018 10:11:34 PM UTC, comment #2: 

I went to the

http://hg.savannah.gnu.org/hgweb/octave/file/a4c687fec320/build-aux

webpage site and notice there is no build-aux/move-if-change file/link.  So I deleted that and the checkout works:


sebald@linux ~/octave/octave-test123/octave $ rm build-aux/move-if-change
sebald@linux ~/octave/octave-test123/octave $ hg checkout release-4-2-2
[works]


OH!  I see now.  I was wondering why "hg purge" was not deleting the build-aux/move-if-change file.  After having done the above steps, I now see that the build-aux/move-if-change is an actual file, whereas in the latest tip it is just a link.  Was some file moved and now Mercurial is confused somehow?  The build-aux/move-if-change file looks to be generated some kind of link, perhaps, i.e.,


# Additional gnulib files and scripts used by Octave's buildsystem.
gnulib_files="
  build-aux/move-if-change
"


Dan Sebald <sebald>
Wed 28 Mar 2018 10:04:05 PM UTC, comment #1: 

The warning message does exactly tell you which file is the problem, build-aux/move-if-change.

On release-4-2-2, build-aux/move-if-change was a file in the source repository. On the current stable and default branches, it is not. If you run bootstrap on the current branch heads, build-aux/move-if-change will be a symlink. If you then try to update to release-4-2-2, it will rightly complain about a file conflict.

The correct way to clean the entire source tree is 'hg purge --all'. Without the '--all' option it does not delete files that match the .hgignore patterns. If you used 'hg purge --all' you should be fine.

Also you should not be using 'tip', especially when a lot of work is happening on both default and stable, 'tip' may resolve to either the head of the default branch or the head of the stable branch.

Mike Miller <mtmiller>
Group Member
Wed 28 Mar 2018 09:55:10 PM UTC, original submission:  

I've run into an error attempting to get release-4-2-2 so that I may check if Bug #53500 is fixed in 4.2.2 (it's fixed in dev version).  I went back to a fresh clone to illustrate:


sebald@linux ~/octave/octave-test123/octave $ hg clone http://hg.savannah.gnu.org/hgweb/octave
sebald@linux ~/octave/octave-test123/octave $ cd octave/
sebald@linux ~/octave/octave-test123/octave $ hg checkout release-4-2-2
[works]
sebald@linux ~/octave/octave-test123/octave $ hg checkout tip
[works]
sebald@linux ~/octave/octave-test123/octave $ hg checkout release-4-2-2
[works]
sebald@linux ~/octave/octave-test123/octave $ hg checkout tip
[works]
sebald@linux ~/octave/octave-test123/octave $ ./bootstrap
[continues as expected]
sebald@linux ~/octave/octave-test123/octave $ hg checkout release-4-2-2
resolving manifests
build-aux/move-if-change: untracked file differs
abort: untracked files in working directory differ from files in requested revision


Perhaps this is my misunderstanding of how checking out a tagged release should work.  The way I would characterize this is that anything on the stable branch at or before changeset

24880 (68720b4477e4) maint: merge away extra head on stable branch

creates this error message.  Checking things out from the dev branch shows no problems.

The warning message doesn't indicate what files this is failing on so that I may delete them.  I do an "hg purge" and see no untracked files in the directogy, but still get


sebald@linux ~/octave/octave-test123/octave $ hg purge
sebald@linux ~/octave/octave-test123/octave $ hg checkout release-4-2-2
resolving manifests
build-aux/move-if-change: untracked file differs
abort: untracked files in working directory differ from files in requested revision



Dan Sebald <sebald>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by mtmiller (Posted a comment)
  • -email is unavailable- added by sebald (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 2 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2018-03-28 mtmiller StatusNone Invalid / Not an Octave Bug
        Open/ClosedOpen Closed

    Back to the top

    Powered by Savane 3.13-caa5.
    Corresponding source code