36

I would make crazy use of such a revision control. If it doesn't exist - where would to a good starting point for building one? I can probably make a lot of designs and interaction flows, but to implement it is another thing.

Would it be a good idea start by creating a macro to work with Adobe Photoshop / Illustrator? Or one of the online image editing tools?

Can anyone refer me to anyone working on one of the online image editing tools?

Nietzche-jou
  • 13,657
  • 4
  • 32
  • 45
meilas
  • 493
  • 1
  • 5
  • 12
  • Great question! Never seen one before unfortunately, but it'd be a good idea. – Cyclone Jul 30 '10 at 02:46
  • 1
    Thanks everyone for the great and helpful answers. Lots of insight gained. – meilas Jul 30 '10 at 04:40
  • Random note: collaborative creative work, collaborative art? :D – meilas Jul 30 '10 at 04:48
  • So my friend on Twitter linked me to http://www.sumopaint.com/api/ which has an API. cant find the documentation though :/ – meilas Jul 30 '10 at 04:56
  • another twitter link http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=4502718 Autodesk Vault and Adobe version Cue http://www.adobe.com/products/creativesuite/versioncue/ omg thank you incredibly smart twitter friend. – meilas Jul 30 '10 at 05:03
  • As far as I know, in academic research, there is, at least, one research paper in SIGGRAPH talking about this. It is proven in GIMP: Nonlinear Revision Control for Images http://research.microsoft.com/apps/pubs/default.aspx?id=147068 – Drake Guan May 28 '13 at 03:53

12 Answers12

16

Subversion is actually pretty good for version controlling binary files. It's just about the only great strength it has over, say, Git (as far as I'm concerned, anyway). See this answer of mine for a more detailed explanation of that assertion.

ImageMagick has a compare command that shows you the pixel-by-pixel difference between two RASTER images. Vectored images might be trickier (unless you can look at an SVG source and immediately see the resulting picture). Unfortunately this doesn't really help you with Photoshop/Illustrator though.

If you're working under Windows, TortoiseSVN has an image comparison utility too.

Community
  • 1
  • 1
detly
  • 26,649
  • 13
  • 85
  • 142
8

Perforce is fairly commonly used in game development where image content may be included in source control. They have invested quite a bit of effort in handling this type of content very efficiently.

They also have visual diff tools. http://blog.perforce.com/blog/?p=1394

...and other graphics oriented plugins. http://www.perforce.com/perforce/products/plugins-p4gt.html

Oh, and apparently when used for content rather than just code, these types of tools are referenced as Digital Asset Management tools or DAMs rather than the SCM name with which most of us are familiar.

Rob Cooke
  • 948
  • 1
  • 6
  • 12
4

Does PixelNovel count? PixelNovel is source control for Photoshop, and it looks like it's based on SVN. To be fair, it won't work outside of Photoshop and it seems to be a commercial product, but it has been done by someone, so I guess it's not too outrageous an idea.

edit: 27/9/2015 it looks like PixelNovel went out of business

Aryeh Armon
  • 1,971
  • 1
  • 18
  • 35
Perrako
  • 768
  • 4
  • 12
4

GitLab supports image comparison with a web based slider tool and onion skin tool. This is a good option to manage images and other types of files in the same place.

Here is a live example https://gitlab.com/gitlab-org/gitlab-test/commit/2f63565e7aac07bcdadb654e253078b727143ec4?view=inline

enter image description here

wnordmann
  • 302
  • 2
  • 10
3

Most revision control systems support binaries. You could easily use SVN or GIT to store binaries, i.e. pictures in.

Romain Hippeau
  • 23,328
  • 5
  • 53
  • 74
  • 1
    But git's interface is not friendly to non-programmers. I would never ask an artist to use it. – Almo Aug 28 '18 at 15:07
3

How would you propose to diff and patch images? Figure that out and we can get right on it.

Does this even make sense? Is someone ever editing the upper left corner of an image while someone else is editing the lower right?

If you just want to see different "versions" of images with the same filename, that's trivial. Would get rather expensive on storage though.

jdd
  • 4,157
  • 1
  • 24
  • 28
  • 4
    Yes, jeremiahd, this does make sense. Creative work works best when a lot of feedback and changes are made to the creative. Just like code. – meilas Jul 30 '10 at 02:57
  • 1
    @meilas - but it only makes sense if they are separable. If somebody changes every pixel in an image (eg color balance) then a RCS doesn't really help you combine that with somebody else changing every pixel to rescale it. – Martin Beckett Jul 30 '10 at 03:54
  • @Martin - I should probably illustrate what I mean by revision control for images, to clarify. I don't expect every aspect in code revision control to port over to image revision control. Interaction design time! yay. – meilas Jul 30 '10 at 04:39
  • 1
    @melias I mean does it make sense in the diff/patch/incremental-change model that is what is generally meant by version control. If someone makes the background color of an image different, and someone else adds a tree to an "older version" of that image, you need a way of representing those changes so that the person who added the tree can "pull in" the new background color while keeping their tree, or provide a way for them to choose both the new background color and the tree. I don't doubt that something like VC would be good for images, but the conceptual models do not seem to map exactly. – jdd Jul 30 '10 at 04:39
  • @Martin @jerjemiahd - do you know of any helpful links that provide a good overview of code revision control? – meilas Jul 30 '10 at 04:43
  • http://en.wikipedia.org/wiki/Revision_Control http://svnbook.red-bean.com/ http://progit.org/book/ will give you a high level overview, and two thorough examples of currently widely-used VC systems. – jdd Jul 30 '10 at 04:46
  • @jeremiahd that would be a really great idea. bc if my friend did something really great to a logo we were both working on - then it would save me a lot of time if i were to just be able to pull in the change that she made... – meilas Jul 30 '10 at 04:48
  • 2
    @melias the problem is that representing changes in binary files is not easy. You can't analyze a binary file in the same way as a text file, making diff and merge algorithms harder to create if not practically impossible right now. If we knew how to diff and patch (show the changes between two versions of one file and apply changes from one version to another, respectively) images, this would have been a solved problem long ago. If the image was stored entirely as metadata, it might be easier, but I'm not aware of any image formats (minus XBM icons, i guess) that are like that. – jdd Jul 30 '10 at 04:53
  • 1
    @jeremiahd - SVG files are basically XML files, and can theoretically be diffed and merged via source control. There is still the problem of semantically conflicting changes, but that's a problem for source code too anyway. – detly Jul 30 '10 at 05:09
  • @detly good point. are you aware of any people working on merge algorithms for SVG files? It is a problem for source as well, but it's a much harder problem for images. Analysis is easier (and more thoroughly researched) for source due in part to a richer contextual environment, and I might be wrong, but I'm betting that most people aren't going to be wanting to to a textual conflict resolution on a bunch of svg paths ;) I'd definitely be interested to see work being done in this area though. – jdd Jul 30 '10 at 05:18
  • @jeremiahd - no, I'm not aware of anything useful. Working on RabbitVCS I spent a bit of time recently researching potential diff tools for various file formats, but image diffs are still fairly prehistoric :P I can envisage how it could work, but of course coding it is altogether different... – detly Jul 30 '10 at 05:30
1

Version control for images and any other type of "rich" content is usually referred as Digital Asset Management (DAM) system. These are typically more business type applications and not more like subversion. However, most of these system support versioning and metadata assignment to images. How easy to use and how integrated these systems are the questions that should be answered.

I would say any of these DAM systems would be competing with your old habit of saving your file onto the network share as it is so easy to do that. However, these systems are actually design for collaboration and long term preservation.

One good DAM system is Elvis DAM since it has a desktop client that supports drag and drop type of operations and it also has direct integration into Adobe Creative suite. It won't do a diff for your versions but you can actually see the versions side by side with all changes to data.

Here is a good example: Elvis DAM version history screen

1

I was thinking about this for PhotoShop recently and I think the way to go it would be to store the command stack or a variation of it.

How this could be done I don't know. Presumably a plugin could access this data.

Perforce looks good for bitmap images

Rob Stevenson-Leggett
  • 33,849
  • 21
  • 84
  • 138
1

Crazy Idea but what if you were to record an action (if you are in Photoshop obviously), for every image that you work on. Then you could simply play the action back on the original image and voilà!

This requires some forethought in pressing 'Record Action' when starting editing.. but I'm sure a plugin could be rigged to do it for you.

It's a starting point though.

In general SVN or maybe even the Mercurial LargeFiles Extension would be ok though...

Dylan Watson
  • 2,103
  • 1
  • 17
  • 38
0

In general, you should investigate tools that provide digital asset management (DAM), which is what you might consider revision control in the media world. See, for example, http://thedambook.com as a gateway to such tools.

One popular tool is that mixes image editing and digital asset management is Adobe Lightroom. Adobe has been pushing the idea of recording a history of non-destructive edits and then applying them as a recipe on top of the raw camera data. You can create and name snapshots of different edited versions (perhaps a sequence of versions) and navigate between them in a visual manner. Apple Aperture may provide similar ability. Another professional tool is Canto Cumulus.

These tools don't preserve the "diff"-ability that other answers seem to be focused on, nor do they necessarily provide the ability to have commit messages. But, they do allow tracking of variations and association of image files back to their original components.

Emil Sit
  • 21,140
  • 6
  • 49
  • 73
0

To manage binary formatted digital asset repositories, I use unison, and backups.

I decided that managing revisions did not make sense, but being able to keep multiple repositories in-sync did, and backups are a "no-brainer".

Unison gets overlooked too often, and although I discovered it about five years ago, I only recently identified it as the perfect tool for me in certain circumstances.

http://www.cis.upenn.edu/~bcpierce/unison/

Note however that vector images are a totally different story. SVG images can be manifested in complete plain text, where revision management would make perfect sense.

Docunext
  • 793
  • 5
  • 9
-1

You can refer this link Image Version Control

It provides a mechanism to provide version control on images. For minor changes on images, instead of forming a whole new image, a compressed form of change will be appended to the original image.

Yash
  • 51
  • 4
  • A link to a solution is welcome, but please ensure your answer is useful without it: [add context around the link](//meta.stackexchange.com/a/8259) so your fellow users will have some idea what it is and why it’s there, then quote the most relevant part of the page you're linking to in case the target page is unavailable. [Answers that are little more than a link may be deleted.](//stackoverflow.com/help/deleted-answers) – Rob Feb 02 '18 at 04:59