BUG: git diff --name-only ignores --ignore-*

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When using the --name-only option on git diff (git 2.33.0),
command-line parameters such as  --ignore-blank-lines are not
respected.

Instead, git diff behaves as if these options were not specified at all.

This is either an implementation defect, or a documentation defect,
because that (IMHO surprising) behaviour is not spelled out in
https://git-scm.com/docs/git-diff.

IMHO, this is an implementation defect, as --ignore-* is orthogonal to
--name-only. I would like to use --name-only to identify the set of
files which have only(!) --ignore-* changes (by intersecting the set
of files returned by git diff with, and without --ignore-*).

The bash script below reproduces this for --ignore-blank-lines; the
same would extend to the other --ignore-* options as well.

****************************
#!/usr/bin/env bash

set -e

GIT_REPO=repo
TEST_FILE=the_file.txt

rm -rf ./${GIT_REPO}
mkdir ${GIT_REPO}
pushd ${GIT_REPO}

git init --initial-branch=main
git config user.name "myuser"
git config user.email "myuser@xxxxxxxxxxx"

cat << EOF > ${TEST_FILE}
Hello world.
EOF

git add -A
git commit -m"Initial commit"

# add empty lines
cat << EOF >> ${TEST_FILE}


EOF

without_name_only=$(git diff --ignore-blank-lines)
echo "----
Without --name-only:
${without_name_only}"

with_name_only=$(git diff --ignore-blank-lines --name-only)
echo "----
With --name-only:
${with_name_only}"

if [[ ${without_name_only} != ${with_name_only} ]] ; then
    echo "
fail: expected same data returned
"
    exit 1
else
    echo "
pass: all good
"
    exit 0
fi



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux