Checking the attributes of a file

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.

Getting ready

We'll use the attributes_example repository:

$ git clone https://github.com/dvaske/attributes_example.git
$ cd attributes_example

How to do it...

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
$
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset