There is a good discussion of this here: https://www.impulseadventure.com/photo/flow-catalog-versions.html
There are significant differences between code repository and image DAM.
- Image use tends to be a multi-branch tree. While you do have branches in code, the goal usually is to minimize them. In image use you can end up with situations like this
--- Cropped and sharpened.
--- --- Reduced resolution for Facebook
--- --- Large thumbnail for gallery
--- --- Medium thumbnail for gallery
--- --- Small thumbnail for gallery.
--- --- Large version with watermark for gallery
--- --- --- Black and white version with watermark
--- --- --- Black and white version
--- --- Special crop for client.
--- --- Adjusted color cast for different client
(I did one web page were each image had 18 different resolutions.)
Code tends to have small differences between versions. In a typical checkin only a few percent of the code changes. In an image most of the pixels change some, and the space saving from storing only changes is small.
In a code repository you are concerned with the bit level changes. A line of code here, the value of a constant there. In image manipulation a history of the steps you did is more significant.
Image work tends to be much less collaborative than code. While graphics artists may take an existing image, and layer graphic artwork over it, most images are managed by one person through out their life span. (This is different in video/film.)
In software the fundamental level is the project A single class file doesn't mean much without the rest of the project. In image processing the image is the fundamental unit. You can spend your entire life working on a single software project (Microsoft Word...) In photography you rarely spend more than a few minutes on an image.
In software the important task is to be able to track changes and revert back to a prior version. In image processing the important task is to be able to find that image and its derivatives at a later date.