All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konstantin Kharlamov <hi-angel@yandex.ru>
To: git@vger.kernel.org
Subject: [BUG] git-rebase unnecessarily change mtime of files
Date: Wed, 25 Aug 2021 12:49:10 +0300	[thread overview]
Message-ID: <7d29b582ef44785015e631251da8499b197ff4bc.camel@yandex.ru> (raw)

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



             reply	other threads:[~2021-08-25  9:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-25  9:49 Konstantin Kharlamov [this message]
2021-08-25 12:45 ` [BUG] git-rebase unnecessarily change mtime of files Ævar Arnfjörð Bjarmason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7d29b582ef44785015e631251da8499b197ff4bc.camel@yandex.ru \
    --to=hi-angel@yandex.ru \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.