Thread (1 message) 1 message, 1 author, 2016-06-15

Re: git rebase -i (and gitk) problem in Windows/Cygwin

From: Hannu Koivisto <hidden>
Date: 2016-06-15 22:46:37

Hannu Koivisto [off-list ref] writes:
Greetings,

With current git.git (1.6.2.2.446.gfbdc0) built for Cygwin, running
on Windows XP, executing the following commands...

mkdir test
cd test
git init

echo initial > kala.c
echo initial > sur.c
git add *.c
git commit -m "Initial commit."

echo addition >> kala.c
git commit -a -m "Kala addition 1."

echo addition >> sur.c
git commit -a -m "Sur addition."

echo addition2 >> kala.c
git commit -a -m "Kala addition 2."

git rebase -i HEAD~3

...and moving commit "Kala addition 2." right after "Kala addition
1." and marking it to be squashed results to

---8<----------------------------------------------------
error: Entry 'kala.c' not uptodate. Cannot merge.
fatal: merging of trees 787519579d90e45dfee00189985fa8c92f56be8f and 83f124d88764604c7d348e73103168bd98665e56 failed

Could not apply 14eb9c7... Kala addition 2.
---8<----------------------------------------------------

rebase -i used to work fine earlier, but unfortunately I don't
remember which version I used back then (1.6.something).

This problem doesn't occur on Linux with the same git version.
For what it's worth, I managed to bisect the rebase problem down to
commit e4c7292353dbef39feac1c6a60c5cde9140520a6 by Kjetil Barvik:

    write_entry(): use fstat() instead of lstat() when file is open

    Currently inside write_entry() we do an lstat(path, &st) call on a
    file which have just been opened inside the exact same function.  It
    should be better to call fstat(fd, &st) on the file while it is open,
    and it should be at least as fast as the lstat() method.
I don't know if it might be related (I suppose it could be because
of that "...not uptodate" message) but I also see the following
behaviour with gitk:

* I change a file in workspace.
* I "Update" in gitk - I see the change.
* I undo the change.
* I "Update" in gitk - I see an empty change.
* "Reload" doesn't help - I still se an empty change.
* I run "git status" on the command line and then select "Update"
  in gitk -> now the change disappears.
-- 
Hannu
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help