Message ID | xmqqv83cl97m.fsf_-_@gitster.g (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Re*: git log --name-only improvement: show old file name in rename | expand |
On 5/17/2024 12:00 PM, Junio C Hamano wrote: > Nathan Faulkner <natedogith1@gmail.com> writes: > >> The documentation for --name-only says "Show only names of changed >> files." I would interpret this to mean "output the names of all files >> that changed", not "output the names of all files that changed, unless >> git detected it as renamed". > > Interesting observation, but we do show renamed files no? Even when > there is no content changes? A quick experiment tells me it does, > so "unless" is not quite correct. It seems to me it's not showing the names of all files. If a file was created and a separate file was deleted, but git happens to detect it as a rename, it will only show the created file even though from my perspective both files changed. Though even for a true rename, I'd have expected --name-only to show all paths that changed (what you want if you're trying to find code owners or determine what needs to be rebuilt). > diff --git c/Documentation/diff-options.txt w/Documentation/diff-options.txt > index 0e9456957e..b9eaea32d9 100644 > --- c/Documentation/diff-options.txt > +++ w/Documentation/diff-options.txt > @@ -329,7 +329,8 @@ explained for the configuration variable `core.quotePath` (see > linkgit:git-config[1]). > > --name-only:: > - Show only names of changed files. The file names are often encoded in UTF-8. > + Show only the name in the before-tree of changed files. > + The file names are often encoded in UTF-8. > For more information see the discussion about encoding in the linkgit:git-log[1] > manual page. > That description sounds to me like it only shows files that existed in the from-commit, not any files that were created in the to-commit. If the description is updated, it'd probably be a good idea to explicitly call out that --no-renames can be used to get the expected behavior of showing all files that changed. This behavior can also lead to a situation where git diff --name-only stops reporting a file as changed when including a newer commit that doesn't involve the file. $ echo '{}' > foo.json; git add .; git commit -m foo $ rm foo.json; git add .; git commit -m delete $ echo '{}' > bar.json; git add .; git commit -m bar $ git diff --name-only HEAD~2 HEAD~1 foo.json $ git diff --name-only HEAD~1 HEAD bar.json $ git diff --name-only HEAD~2 HEAD bar.json
Nathan Faulkner <natedogith1@gmail.com> writes: > That description sounds to me like it only shows files that existed in > the from-commit, not any files that were created in the to-commit. Sorry, this was a typo/thinko. An updated version was posted on the list after the message you are responding to.
diff --git c/Documentation/diff-options.txt w/Documentation/diff-options.txt index 0e9456957e..b9eaea32d9 100644 --- c/Documentation/diff-options.txt +++ w/Documentation/diff-options.txt @@ -329,7 +329,8 @@ explained for the configuration variable `core.quotePath` (see linkgit:git-config[1]). --name-only:: - Show only names of changed files. The file names are often encoded in UTF-8. + Show only the name in the before-tree of changed files. + The file names are often encoded in UTF-8. For more information see the discussion about encoding in the linkgit:git-log[1] manual page.