tags:

views:

48

answers:

4

I read an interesting SO discussion on putting separate projects in their own repos or not. But my question is about a single project, which has code, and then a lot of artwork - hundreds of Mb at least. At a simple usability level, it's annoying that telling a developer to "go get a working copy" means waiting ages for the whole art section to download. And I'm concerned this is going to be a big bloat when we use branches more.

Conceptually it's one project. But when I've worked with repos which expect me to individually get working copies of several sub-directories, things seem to screw up somehow. Through user error most likely, but the whole point is to make suer errors less easy to make!

Another problem I seem to remember is setting per-user permissions on sub-directories won't let people simply get a working copy of the repo, with the unauthorized folders omitted. Instead, it just breaks... I don't really want my artists able to change (or even see) code.

+1  A: 

You could also go with one repo but store the resources in a separate tree. I.e., just move the usual layout

trunk/
branches/
tags/

below a new folder you call code or something like that, and store the resources in a folder artwork. I.e. create a folder structure like this

code/
    trunk/
    branches/
    tags/
resources/
    trunk/
    branches/
    tags/

A developer usually only wants to get the code trunk, and as he usually gets trunk in the first layout he just needs to get code/trunk in the second layout instead. I haven't tried this, but if the code itself relies on resources you might be able to pull them via svn:externals.

bluebrother
This means that once you branch or tag, you have to branch/tag both, and then edit the externals to use the branch or tag.
Sander Rijken
I agree about the branch/tag to be done twice, but that is easy to script and can be automated.
omermuhammed
A: 

You could have a separate repo for resources, and just refer to it with an svn:external property, avoiding all those user errors.

Trevor Harrison
This means that once you branch or tag, your external is still a moving target. You have to branch/tag and then *edit* the external to use a fixed revision or its own branch/tag to get this right
Sander Rijken
A: 

Hi. It looks like compressing your binary files can reduce the amount of time it takes to import and export such data from a Subversion repository.

jkndrkn
Not binary files. Art resources, which are often not that compressible - PNGs don't really compress for instance, neither do video files. It's a good thing to do, but doesn't really solve the problem.
John
+3  A: 

I'd still put the into one repository, to allow you to branch and merge this project centrally. Especially when tagging release, you'd have to tag in 2 repositories when releasing.

You could do a structure like this:

/svn/repository/trunk/src
/svn/repository/trunk/artwork

And tell developers to only checkout src, art people checkout artwork, and when branching, you can branch/tag trunk

Sander Rijken