[crossfire] crossfire source code control systems

Mark Wedel mwedel at sonic.net
Mon Aug 14 23:28:21 CDT 2006


Alex Schultz wrote:
> Ok, I just made up a table of the criteria that Mark listed, and a
> couple others, for CVS, SVN, Mercurial, Bzr, and Darcs (anyone want any
> others on the table?). If anyone has any revisions or wants to add any
> other SCMs feel free to make them.
> Currently storing it in my namespace on the wiki at:
> http://wiki.metalforge.net/doku.php/user:rednaxela:scmtable
> Make sure to read the numerous footnotes when looking at the table.

  Few notes on this:

  I was looking over the sourceforge documentation, and hosting mercurial or 
darcs on the project web space and getting the data via the webserver looks to 
be a violation of their terms of usage.

  In particular, two things stand out - the quota for the web space is 100 mb, 
and they don't want bandwidth intensive use (specifically say to use the file 
release mechanism for file releases, not the web space).  Crossfire, with CVS 
history and all, uses about a gigabyte of space. The file access rules might be 
another issue.

  OTOH, mercurial makes it much easier to have children, given it is a 
replicated system.  So one could easily have sourceforge or the like the 
definitive location, but not allow the read-only access from there, instead, 
various sites could have branches that make it available, and they just do 
pullovers nightly or whatever.  But the sourceforge is certainly an issue, but 
if we decide something not officially supported by sourceforge is best, we can 
then start the process of seeing what would work.

  Also, I'm not sure if I'd put a yes in the symbolic tagging for SVN - IIRC, 
SVN doesn't actually have symbolic tags, rather, you make a new repository of 
your tag.

  Thus, we'll end up with like 50 repositories.  That approach isn't bad, but i 
really like to be able to do something like a 'cvs log', see for what version 
the symbolic tag was done, and thus what has been done after that (if a bug was 
reported with the last version as having the bug, has it already been fixed?) - 
with SVN, from what I gather, you'd need to go to the repository for that 
tag/release, see the version there, then go back to the head branch and see the 
changes since that time.

  There may be ways to do that with scripts they have, and I may be wrong in 
that, but that is what I gather (Actually, when I think about this, I don't 
think there is anything preventing changes in that copied repository, so even 
that may not be accurate, eg, I make a rel-1-10 repository, then someone checks 
in a change there for a 1.10.1 release instead of making another repository)

  Also, for SCCS operations without access to repository, my understanding again:
SVN: yes - like mercurial, it stores all the change log information, etc, when 
you check out, so you can do diffs, see changed files, revert to last pristine 
file without network connection (or maybe it only stores a subset of the tree, 
but from my reading of the SVN docs, it suggest you can do diffs, unget, and see 
what files you have modified in your local directory without need for connection 
to repository, so I'd mark it as a yes for that)

mercurial: same as SVN, and you don't need a branch - that is the downside to 
footnote 12 - no light weight checkout.  OTOH, I think this means checkins are 
more lightweight - it can just send the diffs to the server.  It's sort of a 
tradeoff - more time for the initial checkout but less time for future 
operations (I think it was the SVN doc which said this was intentional - disk 
space has become much cheaper/more available than network bandwidth, so it makes 
sense to try and cache as much data locally as reasonable).





More information about the crossfire mailing list