git-annex's metadata works best when files have a lot of useful metadata attached to them.

To make git-annex automatically set the year and month when adding files, run: git config annex.genmetadata true

git commit hook

A git commit hook can be set up to extract lots of metadata from files like photos, mp3s, etc. Whenever annexed files are committed, their metadata will be extracted and stored.

Download pre-commit-annex and install it in your git-annex repository as .git/hooks/pre-commit-annex
Remember to make the script executable! chmod +x .git/hooks/pre-commit-annex

using extract

The git commit hook can use extract to get metadata.

Install it from http://www.gnu.org/software/libextractor/
apt-get install extract

Configure which metadata fields to ask extract for: git config metadata.extract "artist album title camera_make video_dimensions"

To get a list of all possible fields, run: extract -L | sed 's/ /_/g'

using exiftool

The git commit hook can also use exiftool to get metadata.

Install it from http://owl.phy.queensu.ca/~phil/exiftool/
apt-get install libimage-exiftool-perl

Configure which metadata fields to ask exiftool for: git config metadata.exiftool "Model ImageSize FocusRange GPSAltitude GPSCoordinates"

To get a list of all possible fields, run: exiftool -list

using both extract and exiftool

If you want some metadata that extract knows about, and other metadata that exiftool knows about, just install them both, and set both metadata.extract and metadata.exiftool.

overwriting existing metadata

By default, if a git-annex already has a metadata field for a file, its value will not be overwritten with metadata taken from files. To allow overwriting, run: git config metadata.overwrite true