Version Control for Graphics

Version ControlGraphicsVersioning

Version Control Problem Overview


Say a development team includes (or makes use of) graphic artists who create all the images that go into a product. Such things include icons, bitmaps, window backgrounds, button images, animations, etc.

Obviously, everything needed to build a piece of software should be under some form of version control. But most version control systems for developers are designed primarily for text-based information. Should the graphics people use the same version-control system and repository that the coders do? If not, what should they use, and what is the best way to keep everything synchronized?

Version Control Solutions


Solution 1 - Version Control

Yes, having art assets in version control is very useful. You get the ability to track history, roll back changes, and you have a single source to do backups with. Keep in mind that art assets are MUCH larger so your server needs to have lots of disk space & network bandwidth.

I've had success with using perforce on very large projects (+100 GB), however we had to wrap access to the version control server with something a little more artist friendly.

I've heard some good things about Alienbrain as well, it does seem to have a very slick UI.

Solution 2 - Version Control

GitHub recently introduced "image view modes", take a look: https://github.com/blog/817-behold-image-view-modes.

Solution 3 - Version Control

We, too, just put the binaries in source control. We use Git, but it would apply just as well to Subversion.

One suggestion I have is to use SVGs where possible, because you can see actual differences. With binaries (most other image formats), the best you can get is a version history.

Solution 4 - Version Control

A lot of the graphics type people will want something more sophisticated than subversion. While it's good for version control, they will want a content management system that allows cross-referencing of assets, tagging, thumbnails and that sort of thing (as well as versioning).

Solution 5 - Version Control

TortoiseSVN can show image revisions side-by-side, which is really useful. I've used it with different teams with a great degree of success. The artists loved having the ability to roll back things (after they got used to the concepts). It does take a lot of space, though.

Solution 6 - Version Control

We use subversion. Just place a folder under /trunk/docs for comps and have designers check out and commit to that folder. Works like a champ.

Solution 7 - Version Control

I would definitely put the graphics under version control. The diff might not be very useful from within a diff tool like diffmerge, but you can still checkout two versions of the graphic and view them side by side to see the differences.

I don't see any reason why the resultant graphics shouldn't be kept in the same version control system that the coders use. However, when you're creating graphics using PSD files or PDN files you might want to create a seperate repository for those as they have a different context to the actual end jpeg or gif that is produced and deployed with the developed application.

Solution 8 - Version Control

@lomaxx TortoiseSVN includes a program called TortoiseIDiff which looks to be a diff for images. I haven't used it but looks intriguing.

Solution 9 - Version Control

Interesting question. I don't have a bunch of experience working directly with designers on a project. When I have, it's been through a contractual sort of agreement where they "delivered" a design. I have done some of my own design work for both web sites and desktop applications, and though I have not used source control in the past, I am in the process of implementing SVN for my own use as I am starting to do some paid freelance work. I intend to utilize version/source control precisely the way I would with source code. It just becomes another folder in the project trunk. The way I have worked without source control is to create an assets folder in which all media files that are equivalents of source code reside. I like to think of Photoshop PSD's as graphics source code while the JPEG output for a web site or otherwise is the compiled version.

In the case of working with designers, which is a distinct possibility I face in the near future, I'd like to make an attempt to have them "check-in" their different versions of their source files on a regular basis. I'll be curious to read what others with some experience will say in response to this.

Solution 10 - Version Control

In my opinion Pixelapse combined with a backup solution is the best version control software for graphics that I've found thus far. It supports adobe files and a bunch of normal raster images. It has version by version preview. It autosaves when the files update(on save). It works like dropbox but have a great web interface.

You can use it in teams and share projects to different people. It also support infinite reviewers which is great for design agencies. And if you want you can publicly collaborate on projects that are "open".

Unfortunately you can't have a local pixelapse server, so for backup my current setup is that I have the Pixelapse folder(like a dropbox folder) inside a git repo for snapshot creation.

Solution 11 - Version Control

With respect to diff and merging, I think the version control is more critical for graphics and media elements. If you think about it, most designers are going to be the sole owners of a file -- at least in the case of graphics -- or at least I would think that'd be the case. I'd be curious to hear from a designer.

Solution 12 - Version Control

@Damian - Good point about the tagging and cross referencing. That's true; while I haven't working with many designers on a software development project, I have worked for a company that had a design department and know that this is an issue. Designers are still (perpetually) looking for the perfect system to handle this sort of thing. I think this is more suited to a design department for shared access, searching and versioning, etc to all assets -- where there is a business incentive to not reinvent the wheel wherever/whenever possible. I don't think it would apply for a project-oriented manner as tagging and cross referencing wouldn't be quite as applicable.

Solution 13 - Version Control

We keep the binary files and images in revision control, using Perforce. It's great!

We keep a lot of art assets, and it scales well for lots of large files. It recognizes binary files, the ones that can't be diffed, and stores them as full file copies in the back end.

It has P4V (cross-platform visual browser), and a thumbnail system so image files can be seen in the browser.

Solution 14 - Version Control

You might want to take a look at Boar: "Simple version control and backup for photos, videos and other binary files". It can handle binary files of any size. http://code.google.com/p/boar/

Solution 15 - Version Control

A free and slightly wonky solution is Adobe version Cue its comes with the Adobe Suites up to CS4 and is easy to install and maintain. Offers user level control and is artist friendly. Adobe has discontinued support though for it which is a shame. Adobe Bridge acts as the client between the user and the Version Cue server. If used properly its an inexpensive solution to version control. I use CS3 version cue with CS3 Bridge. Works great for small teams.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKristopher JohnsonView Question on Stackoverflow
Solution 1 - Version ControlhyperlogicView Answer on Stackoverflow
Solution 2 - Version ControlwildcardView Answer on Stackoverflow
Solution 3 - Version ControlJames A. RosenView Answer on Stackoverflow
Solution 4 - Version Controluser1010View Answer on Stackoverflow
Solution 5 - Version ControlPedroView Answer on Stackoverflow
Solution 6 - Version ControlMatt HinzeView Answer on Stackoverflow
Solution 7 - Version ControllomaxxView Answer on Stackoverflow
Solution 8 - Version ControlxanadontView Answer on Stackoverflow
Solution 9 - Version ControlPeter MeyerView Answer on Stackoverflow
Solution 10 - Version ControlStefan WallinView Answer on Stackoverflow
Solution 11 - Version ControlPeter MeyerView Answer on Stackoverflow
Solution 12 - Version ControlPeter MeyerView Answer on Stackoverflow
Solution 13 - Version ControlMark HarrisonView Answer on Stackoverflow
Solution 14 - Version ControlMats EkbergView Answer on Stackoverflow
Solution 15 - Version ControlBFletcherView Answer on Stackoverflow