{"thread":{"id":"50562","subject":"bug - git version 2.20.1.windows.1","startedAt":"2019-02-22T13:27:15Z","lastAt":"2019-02-22T14:10:34Z","messageCount":2,"participants":["Krzysztof Sobierajczyk","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"369911","messageId":"CAM3o+_mX6euHa8Trq5cArcYBc9Wm0FH2L56S6Z3ojdhTcc0CWQ@mail.gmail.com","threadId":"50562","inReplyTo":null,"subject":"bug - git version 2.20.1.windows.1","fromName":"Krzysztof Sobierajczyk","fromEmail":"sobierajczyk.krzysztof@gmail.com","sentAt":"2019-02-22T13:26:51Z","receivedAt":"2019-02-22T13:27:15Z","isPatch":false,"sender":{"key":"sobierajczyk.krzysztof@gmail.com","avatar":null},"body":"for example, I've created a simple repository. Containing two files\n('to rename.txt' and 'to remove.txt'). I wanted to prepare for the\nindex changing the name of the first file and deleting the second\nfile. what git shows you looks wrong. Please check the four\ninstructions\n\n$ git add .\n$ git commit -m \" first commit\"\n$ git mv to\\ rename.txt new\\ name.txt\n$ git rm to\\ remove.txt\n\n\n\n\n\nSAMPLE REPOSITORY AND TEST\n\nUntracked files:\n  (use \"git add <file>...\" to include in what will be committed)\n\n        to remove.txt\n        to rename.txt\n\nnothing added to commit but untracked files present (use \"git add\" to track)\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git add .\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git status\nOn branch master\n\nNo commits yet\n\nChanges to be committed:\n  (use \"git rm --cached <file>...\" to unstage)\n\n        new file:   to remove.txt\n        new file:   to rename.txt\n\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git commit -m \" first commit\"\n[master (root-commit) 46011e3]  first commit\n 2 files changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 to remove.txt\n create mode 100644 to rename.txt\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git status\nOn branch master\nnothing to commit, working tree clean\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ ls -all\ntotal 8\ndrwxr-xr-x 1 ksobierajczyk 1049089 0 lut 22 13:40  ./\ndrwxr-xr-x 1 ksobierajczyk 1049089 0 lut 22 13:38  ../\ndrwxr-xr-x 1 ksobierajczyk 1049089 0 lut 22 13:41  .git/\n-rw-r--r-- 1 ksobierajczyk 1049089 0 lut 22 13:38 'to remove.txt'\n-rw-r--r-- 1 ksobierajczyk 1049089 0 lut 22 13:40 'to rename.txt'\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git mv to\\ rename.txt new\\ name.txt\n                        <--- rename\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git status\nOn branch master\nChanges to be committed:\n  (use \"git reset HEAD <file>...\" to unstage)\n\n        renamed:    to rename.txt -> new name.txt\n                <--- rename is ok\n\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ ls -la\ntotal 8\ndrwxr-xr-x 1 ksobierajczyk 1049089 0 lut 22 13:42  ./\ndrwxr-xr-x 1 ksobierajczyk 1049089 0 lut 22 13:38  ../\ndrwxr-xr-x 1 ksobierajczyk 1049089 0 lut 22 13:42  .git/\n-rw-r--r-- 1 ksobierajczyk 1049089 0 lut 22 13:40 'new name.txt'\n-rw-r--r-- 1 ksobierajczyk 1049089 0 lut 22 13:38 'to remove.txt'\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n\n$ git rm to\\ remove.txt\n                                   <---- remove file\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git status\nOn branch master\nChanges to be committed:\n  (use \"git reset HEAD <file>...\" to unstage)\n\n        renamed:    to remove.txt -> new name.txt\n                     <------------  AND FAIL\n        deleted:    to rename.txt\n\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git commit -m\"second commit\"\n[master 30beac5] second commit\n 2 files changed, 0 insertions(+), 0 deletions(-)\n rename to remove.txt => new name.txt (100%)\n delete mode 100644 to rename.txt\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git status\nOn branch master\nnothing to commit, working tree clean\n\n\nksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n$ git show\ncommit 30beac5b0578d4e4b6e64ea3a3c9a323f14e6277 (HEAD -> master)\nAuthor: Krzysztof Sobierajczyk <sobierajczyk.krzysztof@gmail.com>\nDate:   Fri Feb 22 13:45:21 2019 +0100\n\n    second commit\n\ndiff --git a/to remove.txt b/new name.txt\n    <------- Wrong information\nsimilarity index 100%\nrename from to remove.txt\nrename to new name.txt\ndiff --git a/to rename.txt b/to rename.txt\ndeleted file mode 100644\nindex e69de29..0000000\n"},{"id":"369913","messageId":"20190222141030.GA3272@sigill.intra.peff.net","threadId":"50562","inReplyTo":"CAM3o+_mX6euHa8Trq5cArcYBc9Wm0FH2L56S6Z3ojdhTcc0CWQ@mail.gmail.com","subject":"Re: bug - git version 2.20.1.windows.1","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2019-02-22T14:10:30Z","receivedAt":"2019-02-22T14:10:34Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Feb 22, 2019 at 02:26:51PM +0100, Krzysztof Sobierajczyk wrote:\n\n> ksobierajczyk@KME43 MINGW64 /d/Simple repository (master)\n> $ git status\n> On branch master\n> Changes to be committed:\n>   (use \"git reset HEAD <file>...\" to unstage)\n> \n>         renamed:    to remove.txt -> new name.txt\n>                      <------------  AND FAIL\n>         deleted:    to rename.txt\n\nGit doesn't store rename information; it infers it when generating a\ndiff (and the output from git-status here is a diff between HEAD and the\nindex).\n\nIf \"to remove\" and \"to rename\" contain identical data, then they are\nequally valid candidates, and Git has to pick one. In this case it\npicked the one you didn't expect.\n\n-Peff\n"}]}