git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[BUG] git-rebase unnecessarily change mtime of files

From
KKKonstantin Kharlamov <hi-angel@yandex.ru>
Date
Aug 25, 2021, 09:49 UTC
Message-ID
<7d29b582ef44785015e631251da8499b197ff4bc.camel@yandex.ru>

Suppose your branch has *one* commit that modified file `myfile`. When you interactively-rebase to that commit, mtime of that file will change even if though you did not change the file (i.e. commit you are on has changed the file, but since you're *at* this commit, not before this, there shouldn't have been any change to the file).

This might be bad for performance; however what concerns me personally the most is that my editor keeps asking me "file was changed on the disk, are you sure you wanna modify the file?", which is confusing and annoying.

I am also not completely sure, but it might be a regression, because I don't seem to remember having that before.

# Steps to reproduce
 λ mkdir foo
 λ cd foo
 λ git init
hint: Using 'master' as the name for the initial branch. This default branch
name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:   git branch -m <name>
Initialized empty Git repository in /tmp/foo/.git/
 λ echo hello1 > file1 && git add file1 && git commit -m "1st commit"
[master (root-commit) f1cc312] 1st commit
 1 file changed, 1 insertion(+)
 create mode 100644 file1
 λ echo hello2 > file2 && git add file2 && git commit -m "2nd commit"
[master 8bed9e1] 2nd commit
 1 file changed, 1 insertion(+)
 create mode 100644 file2
 λ echo hello3 > file3 && git add file3 && git commit -m "3rd commit"
[master e6d5aab] 3rd commit
 1 file changed, 1 insertion(+)
 create mode 100644 file3
 λ stat -c %y file2
2021-08-25 12:37:19.008378563 +0300
 λ rebase-at e HEAD~2     # that is `git rebase -i HEAD~2`, then [e]dit the
commit
Stopped at 8bed9e1...  2nd commit
You can amend the commit now, with
  git commit --amend
Once you are satisfied with your changes, run
  git rebase --continue
 λ stat -c %y file2
2021-08-25 12:37:37.375537063 +0300
## Expected
The mtime of the file did not change
## Actual
The mtime of the file changed by 18 seconds
# Additional information

[System Info] git version: git version 2.33.0 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.13.5-zen1-1-zen #1 ZEN SMP PREEMPT Sun, 25 Jul 2021 18:03:00 +0000 x86_64 compiler info: gnuc: 11.1 libc info: glibc: 2.33 $SHELL (typically, interactive shell): /usr/bin/zsh

Next: Ævar Arnfjörð Bjarmason
Message 1 of 2 in “[BUG] git-rebase unnecessarily change mtime of files”
  1. Konstantin KharlamovAug 25, 2021
  2. Ævar Arnfjörð BjarmasonAug 25, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.