What's best practice for storing all CG data on server?

Where I work we currently have file-server in network where every project file is available (from assets,scenes to output files).

Then we use scripts for opening these scenes/assets and locking them, so no one else can mess with them and only you can publish new version of that file. Every version is saved with incremental name. This system also works good because you can just trigger a lot of stuff directly from server (like rendering) and it doesn’t need to get copied locally. We also make backup on other server every few days, but the general fear is that someone can just accidentally delete a lot of files and waste few days work of a team.

I’ve been in a company which used SVN for everything, but SVN is slow and we want to have previous versions of files available all the time, because maybe some scenes use old assets.

We are thinking about using GIT currently, but my concern is getting only files you need from server and not whole repositories.

System must also be able to be shared with people that work from outside the company.

How do you deal with this where you work or what do you suggest? We are deciding on system in few weeks and insight in how others do these things will be helpful. Thanks

I would heartily recommend ditching the home-brew stuff and go with a real source control system. If Perforce is available on your client operating systems, I’d suggest taking a close look at that. We’ve used it for years, at locations across the globe, and we’ve been extremely happy with the features, speed, and reliability.

If you have specific questions about it, let me know.

Listen to the man :slight_smile:

Seriously, he’s right.
We also deal all file versioning with Perforce. We even integrated checkouts, update and submit queries into our pipeline tools.

GIT is a decentralized system, which is super-useful when handling Code, since it is usually mergeable and brancheable.

Perforce is a centralized system which is superior when handling binary files, since you want to lock access to editing files when you edit them.

There are obviously many other facets of the issue, but I can’t really think of a situation where GIT would be preferable to Perforce in a binary-file-environment.

Writing a wrapper for perforce that does exactly what you want will be superior to your home-brew system, since you can then spend your time on the stuff that matters instead.

Perforce is probably the way to go – it’s reasonably fast and it’s very well known, with a long track record and good reliability. Plus, APIs for it are available in every language you can think of so it’s easy to hook into.

Distributed stuff like GIT/SVN/Mercurial are nice, but tend to be slow and suck up disk space with big binary files (like models and textures and animations). I’d be fine with any of the above for code and scripts, but for art assets I stick with perforce.

More outlandishly there’s Alien Brain, which some people love and others despise (and which all agree is expensive) and Tactic which is web based, so good for distributed development.