Checking the .gitattributes
file (or other places where attributes can be defined) to see whether a specific file is affected by an attribute can be quite cumbersome, especially if there are many entries in these files. Git has a built-in method that can be used to tell whether a file has any attribute associated.
We'll use the attributes_example
repository:
$ git clone https://github.com/dvaske/attributes_example.git $ cd attributes_example
We'll start by setting up all the attributes we had in the last example:
$ echo '*.jpg filter=binstore' > .gitattributes $ echo '*.jpg diff=exif-diff' >> .gitattributes $ echo "*.c filter=date-keyword" >> .gitattributes $ echo "*.java filter=date-keyword" >> .gitattributes
Now we are ready to check different files. We'll start on the keyword
branch and check the two code files using the following command:
$ git checkout keyword Branch keyword set up to track remote branch keyword from origin by rebasing. Switched to a new branch 'keyword' $ git check-attr -a hello_world.c HelloWorld.java hello_world.c: filter: date-keyword HelloWorld.java: filter: date-keyword
Let's also see the jpg files on the exif
branch:
$ git checkout exif Branch exif set up to track remote branch exif from origin by rebasing. Switched to a new branch 'exif' $ git check-attr -a hello_world.jpg europe_needles.jpg hello_world.jpg: diff: exif-diff hello_world.jpg: filter: binstore europe_needles.jpg: diff: exif-diff europe_needles.jpg: filter: binstore
It is also possible to check a file against a specific attribute with the following command:
$ git check-attr diff hello_world.jpg hello_world.jpg: diff: exif-diff $ git check-attr filter hello_world.jpg hello_world.jpg: filter: binstore
If we check a file without attributes or against an attribute not associated with the file, the output is empty:
$ git check-attr -a README.md $