tl;dr: Will git or Mercurial have problems versioning a project with a few small files that change frequently and many large files that can change but rarely do?
I write music using Logic Pro, and I'm considering using version control software with my projects from now on. I found a SE question that talks about using Mercurial with Logic (https://video.stackexchange.com/questions/5148), but I would like to use git more (because I need to learn it for my job anyway, so the extra practice would be nice). Would git be an effective tool for versioning Logic projects, or will I run into problems that Mercurial won't have?
Here's what a Logic project directory looks like:
Git mostly handles Logic Pro X projects correctly, but there are a few things you need to watch out for:
The extended attributes on the top-level bundle folder itself might not be preserved, so you'll probably want to save your project as a folder instead of a bundle.
You'll probably want to add Freeze Files
, Bounces
, and *.nosync
to your .gitignore
.
Some of the internal file naming conventions will make it impossible to check out the project from Windows systems. This won't be a problem for versioning your own projects on your own computer, but if you've checked the Logic project into a repository that's part of a larger thing (e.g. a game) this will probably cause problems for others.
If your repository uses LFS, it would be a good idea to register *.aif
and (probably) *.wav
with it, as well as any other large media types that get saved into the Logic project. This will make checking out a new copy much easier, especially from particularly large projects (as git
can have problems with very large pack files).
If you edit the project from multiple computers or branches you will almost certainly have merge conflicts in the Autosave data, so you'll probably want to .gitignore
that as well.
On the other hand, you generally do not need to worry about your original audio recordings changing at all; most of Logic's audio edits are nondestructive in nature and only modify metadata that refers to the original files, rather than modifying the files themselves. The only exceptions to this that I know of are audio edit functions that apply on the "File" tab of the audio editor (e.g. Normalize, Change Gain, Reverse, Time and Pitch Machine, etc.). Functions applied from the "Track" and "Smart Tempo" tabs only edit metadata and shouldn't cause large diffs to happen in git.
Git will do this just as well as Mercurial.
I do not know Logic Pro, but from what you are saying about the file formats, the delta storage might not work well, and in the worst case git will basically have to store each version of each file. You can do the math yourself to estimate the storage requirements then, and decide if that is ok for you. (However, when changing only some parts of uncompressed audio files, you'll probably get some savings...)
Clearly, you won't get any usable diffs and merges, which may be problematic once you collaborate with others, but I don't know if this is a concern here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With