Git and pbxproj

The pbxproj file isn’t really human mergable. While it is plain ASCII text, it’s a form of JSON. Essentially you want to treat it as a binary file.

Here’s what the individual flags do:

-crlf: don’t use crlf <=> cr conversion

-diff: do not diff the file

-merge: do not attempt to merge the file

From the Pro Git book by Scott Chacon

Some files look like text files but
for all intents and purposes are to be
treated as binary data. For instance,
Xcode projects on the Mac contain a
file that ends in .pbxproj, which is
basically a JSON (plain text
javascript data format) dataset
written out to disk by the IDE that
records your build settings and so on.
Although it’s technically a text file,
because it’s all ASCII, you don’t want
to treat it as such because it’s
really a lightweight database — you
can’t merge the contents if two people
changed it, and diffs generally aren’t
helpful. The file is meant to be
consumed by a machine. In essence, you
want to treat it like a binary file.

Leave a Comment