The big problem with a DVCS is that if you are doing asset control on a lot of binary files is that when someone clones the repository they need to clone all versions of all large binary files. This is a mess. Checking out a revision and working with it is far cleaner. For example, if you are doing a lot of work on, say, PSD files, you probably don't want to use a dvcs generally as it will use needless disk space and network bandwidth for marginal benefit.
As for your 4th point, there are plenty of times I refer people to use wget to get the latest version of a file on svn from a specific branch. This is actually a very nice feature. We are looking at moving LedgerSMB to github and their subversion support makes this decision easier in part for that reason.
1) yeah, although I question the sanity of doing this. 2) is this related to #3? 3) yes, but IMO VCS should be used for source files (mostly). large assets should go in an artifact repo. But you are right - putting giant files in git is a terrible idea, especially if you change them often.
the sanity of access control?
> is this related to #3?
Not necessarily.
> yes, but IMO VCS should be used for source files (mostly). large assets should go in an artifact repo
Great, so now the code and the assets going with the code, both being used to build the product, are completely out of sync and essentially unsyncable?
>Great, so now the code and the assets going with the code, both being used to build the product, are completely out of sync and essentially unsyncable?
no. read up on artifact repositories. you declare the asset version that you depend on in your a build script. the assets are fetched from the artifact repo.
there pros and cons of course...
Yes, that's "essentially unsyncable" when you have thousands of assets and have to keep them synchronised by hand. It has the same sanity as considering tarballs to be a good version-control scheme.
> there pros and cons of course...
I see no pros compared to a VCS which can handle code and other assets in the same repository and keep them naturally synchronised by virtue of them being naturally synchronised.
these assets can be referenced by many other systems, not just your source repo.
Don't you now? How else is your tool going to know which version of an asset it's supposed to fetch from the asset store without you telling it?
> ever heard of ruby gems, maven, gradle, npm? these assets are all versioned and available via http.
> these assets can be referenced by many other systems, not just your source repo.
Wow, great, now game developers can do something they have absolutely no desire to do, at the small cost of not being able to do what they need. I'm sure they'll be thrilled.
However I stand by my statement on the technical underpinnings. The fact that svn does not distinguish between a repo, a directory, a branch and a tag means that it is ill-defined and is an evolutionary dead-end. Incidentally there are some benefits for things that git does poorly, but that doesn't make it a good architecture.
Subversion is better than Git and Mercurial in at least several key areas:
Just because Subversion doesn't use Git's branching system and isn't distributed doesn't mean it's totally without merit, and someone so wrapped up in Git's ecosystem that they can find no merit left in Subversion is a developer who likely has an irrational approach to evaluating systems.