Thread (20 messages) flat view 20 messages, 4 authors, 2016-06-15

Re: git checkout under 1.7.6 does not properly list untracked files and aborts

From: Joshua Jensen <hidden>
Date: 2016-06-15 22:52:04

----- Original Message -----
From: Joshua Jensen
Date: 9/9/2011 2:04 PM
This may be an msysGit 1.7.6 issue, as that is what I am using.  It 
also occurs in msysGit 1.7.5, but I am almost certain it did not 
happen in msysGit 1.7.2.

Given an untracked file in the working directory that has been added 
to an alternate branch, when switching to that alternate branch, 'git 
checkout' exits with an error code but does not print anything to the 
console.  It should print an untracked file error.

I have been trying to track this down in code.  The point where the 
error messages are printed, display_error_msgs, is never hit.
Okay, so I've tracked this down, but I am unsure what the correct fix is.

In unpack-trees.c's unpack_trees() function, there are some lines that read:

     if (ce->ce_flags & CE_ADDED &&
         verify_absent(ce, ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o))
             return -1;

If the 'return -1' is changed to 'goto return_failed', then a proper 
error message appears:

     error: The following untracked working tree files would be 
overwritten by checkout:
         one/file/listed/here.txt
     Please move or remove them before you can switch branches.
     Aborting

The thing is, there are multiple files that would be overwritten by 
checkout, and I believe an older version of Git showed me the entire 
list before aborting.

What would be the proper fix here?  What am I doing wrong?

Thanks.

Josh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help