Make It Work: Global .gitattributes
Git is the vanguard of distributed VCSs, and as a matter of course, it provide a way to perform diff or merge on certain files while intermediately treating them as documents of a certain other format. By reflecting appropriate changes to configuration and attributes of git as described in " Git - Git Attributes ," you can set up this intermediate conversion for files of your choice while in diff or merge process. This is best described with an example. Say, there exists a file format called "property list" (hereinafter plist) in Mac, and it can come in 3 forms: XML, binary or JSON (it's not exactly JSON, but is similar to it). To perform diff or merge on files of this type in a consistent way, use command plutil provided by Mac OS X (or an open-source, GPL-licensed alternative libplist ). Then take the following 2 steps.