I have a number of questions regarding the use of subversion.
We are a game developer and generate large quantities of binary data
(textures, 3ds max files, audio files etc.)
We have chosen Subversion to manage revisions of these and other (game
data) files.
Now because these files are predominantly binary and non-mergeable we
apply the needs-lock property to the files
to prevent concurrent checkout. We enable auto-props in each user's
config file and add * needs-lock. This is so that
as artists add files they do not have to remember to add the needs-lock
property to each file.
We can manually remove the needs-lock property on those files (i.e. text
files) which it's ok to merge, and so far this has served us well.
As part of our production pipeline we translate these files to a format
suitable for the platform on which a game runs,
eg conversion of tga files to dds files for a pc game. We would like to
be able to store these converted files in a repository
also, so that people can get the latest version of the built game assets
(without having to convert them). However users can
also build data locally to the same directory that they can also
checkout pre-built data to, so in this case we would like data
to be checked out neither needing lock or read-only.
We currently use cvs for our source code revision control, and Visual
Studio for development, with PushOK's cvs plugin for
interfacing to a cvs server. We are now looking at moving over to
subversion for source control.
Mixing subversion for both data and code poses certain problems.
Visual Studio requires non-modified files to be read-only in order for
it's source control integration to work. The only way for this
to work with subversion is to use the needs-lock property. However this
is not what we want for source files - we want concurrent editing
of source files. (cvs has the concept of 'cvs-editing' a file which
doesn't exclusively lock it unless it's binary).
We _do_ want needs lock on our data files, but not on our source files.
What would be nice is the ability for the 'needs-lock' property to be
set on a per repository basis - in fact all auto-props (then there would
be no problems using subversion for source and data). I would prefer it
to be server-side, but an extension to the client config file so
that each repository could have it's own section would also be ok as a
second-best option.
Or an inverted needs-lock property, so that by default everything has a
lock, except the listed file types ie
* needs-lock
*.cpp needs-lock=n
*.h needs-lock=n
*.txt needs-lock=n
Or a read-only property
*.cpp read-only=y # etc...
Of course needs-lock should also infer read-only, but not vice-versa.
If anybody has any ideas on how to solve these problems, or if anybody
is even doing remotely the same kind of thing I would appreciate
your suggestions and input.
Thanks
Rob Anderson
________________________________________________________________________
This email has been scanned for all viruses on behalf of Juice Games
Ltd by the MessageLabs Email Security System. _______________________________________________________________________
Received on Mon Feb 27 23:28:45 2006