3

I've seen some people build their pipeline around tools like CVS, SVN, GIT etc. I can see that it makes sense because these tools have a stable checkout and revision system. But last time I checked these systems didn't work well with binary files.

It makes no sense to me to check for differences or save file changes in a database. This makes sense for files with context like code but not for scripts from applications. So my impression was these tools do more than needed and only work with ASCII formats like ma, nk, comp etc. well.

Also in most(?) systems the files are stored in databases and not as whole file on a filesystem.

The good checkout and revision mechanism wasn't enough to justify the trouble.

flag

5 Answers

1

I started doing some tests with git, and I set up a master origin for a project. But due to not getting everyone else to buy in to the idea, it fizzled out. I set it up so each shot was a repo. One shot had minutes of sourceimages (about 5 Gig) and the commit failed on that.

We had a discussion about that and other stuff on the maya_dev google group:

Here's what I posted about the few tests I made:

a few tests...

After 3 commits (of 1 100Mb file and 1 30Mb file =130Mb) the total disk usage was 154Mb

I guess it would depend on workflow whether it was useful or not. I have rotating autosaves - and I save a scene every playblast (so there's always a movie that represents the scene). As a first attempt at this. I would .gitignore the autosaves - then commit the scene file, same filename.

Plenty more to think about - what else to ignore - sysadmins always have this problem anyway and end up writing huge exclusion lists. Is it worth it? - i have no idea- maybe not. I love the idea of filenames becoming irrelevant ( like Jeff Raskin proposed.) - and branch names gaining importance ;)

Re: performance:
Branching is instant. Commits took about twice as long as a maya ascii save on 100Mb file. 50sec commit / for 23sec maya save . Not great, but it would happen in the background and you wouldn't be waiting for it.

Checkouts and switching to an existing branch were significantly faster than commits. ~5sec for 130Mb. One benefit is that the version you want to checkout will have a detailed, and instantly accessible description in the commit message - not an arcane coded filename with a number on the end. You will have a record of everything you wanted to say about each commit at the time it was commited. The commit is not just a file, but everything in the repo that worked together to make up that revision.

I think one of the biggest negative points about using git for this, is a problem of perception. Git models a directed graph - like this http://github.com/danielharan/integrity/network . Its complicated but it is what it is and its how people work and collaborate - sometimes you just have to branch off and experiment. Sometimes you want to go back to before the branch. The problem is that artists and producers often don't like looking at DAGs or even admitting that that's what they are working with. People like linear single tracks.

Git is a great version control system, but part of it's success is probably due to Github with all its cool views and reporting etc. So its worth mentioning that you can get Github on your local network.

link|flag
To be honest any source code based version control system is not really going to perform well with binaries. Git's great for text files because it stores the deltas, but it's not capable of doing that for binaries. This leads to larger and larger repositories and hence longer push/pull times. – unknown (google) Jul 26 at 20:51
2

I heard of an animated feature handled like this in a French studio (using SVN if I remember well), and the checkout times went ballooning the further the production advanced.

Maybe the current breed of version control system might be better suited for VFX work, but the classic ones... not so much.

link|flag
1

An interesting question - and one I puzzle over routinely.

To make the question more savoury, I might point out that the new kid on the block - git - handles binary files with aplomb. And it operates exclusively on local file directories; no database required. And it does away with locking semantics - so no checkin/checkout - just branching and merging.

link|flag
1

I think it much more useful to use an asset management system as a base and use something like svn for your coding. An asset management should be able to be extended with metadata like tasks or other database structures. Maybe you will find an asset management witch already has the required revision control tools. I think alienbrain can handle both.

link|flag
1

I currently work out of SVN as much as possible. Screenwriting is done in SVN, the Premiere Project, Nuke Scripts, and source for any internal utilities. I think it works great.

OTOH, there is a lot of stuff I wouldn't put into SVN, and I don't know if I would go that route if I was working on a big feature instead of just shorts. I've heard good things about Git, but I haven't worked with it. I think for a lot of uses outside of development, the traditional "master server" model for revision control probably makes more sense the the distributed model used by Git.

link|flag
Thank you for all these answers. One thing left I am curious about: I wonder if someone has experience with GIT in a production pipeline. – bFloch Jul 24 at 10:26

Your Answer

Get an OpenID
or

Not the answer you're looking for? Browse other questions tagged or ask your own question.