[crossfire] SVN?
Mark Wedel
mwedel at sonic.net
Wed Mar 22 02:21:12 CST 2006
Nicolas Weeger wrote:
> Hello.
>
> Apparently Sourceforge now has SVN up, and you can import CVS repository
> directly.
> See http://sourceforge.net/docman/display_doc.php?docid=31070&group_id=1
> for details
>
> Maybe we could think of moving Crossfire to SVN?
Couple quick notes from my side on this discussion:
I'd generally say that to make a switch, what we are switching to has to be
clearly better. Making a near even trade may not be a good trade just because
of the effort to make the switch (all developers need to install SVN software,
I'd think also that if you have work in progress, you'll have to manually move
that over to SVN environment, etc).
There is also perhaps something to be said that CVS is probably more standard.
To tell people to use cvs to checkout latest version (and provide them the cvs
command), good chance they probably have cvs client installed. Not sure how
wide spread SVN is either.
In terms of specific features:
Renames don't happen that often, but sometimes do happen. I think this mostly
happens regarding stuff in the arch tree - being able to keep revision history
on a move would be nice, but most files in the arch tree don't have much a
history, or if they do, isn't very interesting.
Where we do very infrequently run into problems is when a file/directory has
been deleted and we want to re-add it as a different type (file->directory, or
vice versa). CVS doesn't like that. You can resuscitate the file if it is of
the same type, but not different types. I can't remember last time this came up
- long time back, but does come it once in a very rare while.
Getting specific versions as tchize describes is interesting, but not
something I have used often. I do symbolic tag the official releases, so if you
want to get release 1.4.0, just use the tag rel-1-4-0 with CVS. Once in a rare
while, I'll also want to look at the state of things before some specific
checkin, but doing a checkout based on date has been sufficient so far (cvs
commits are automatically date stamped).
I don't know how many people view the CVS tree through the web page, so not
positive how much benefit we get by SVN making more useful information available.
In terms of branching, as mentioned, I'm usually the one most hit by this.
But to me, the real show stopper here is ability to have a nice merge
functionality. CVS isn't that great - if the there are no conflicts, no
problem, but if there are, CVS just brackets the code where there is an issue,
leaving you to fix it in your favorite editor. I don't know if SVN is any
better. Some other products I have seen do have a nice GUI, letting one select
which line/block to take. I think there are graphical CVS tools, so maybe they
do something similar.
But the real problems with branches is that I don't think there are currently
enough people using crossfire that a branch gets much usage. One idea tossed
out was to put experimental code in the branch, but if no one uses the branch,
doesn't do much good.
One complaint I do have with CVS, and I don't know if SVN is better, is that
CVS will bring back code I delete.
Say for example I'm editing a file, and remove the function foo() as well as
make some other changes. Someone else makes some change to the file and
commits. I do a cvs update, and foo() is now back in my file - even though no
where along the process were any changes made to foo() itself. So then I have
to go and delete again. Branches may make that a little cleaner.
One other note regarding SVN on sourceforge - with CVS, we can basically use
whatever scripts we want for checkin (current e-mail notification being one).
With SVN, only a few specific scripts are allowed, and it seems that only there
versions are allowed. I don't know if that actually makes much difference or
not - I suppose it depends on what the output of their commit script looks like.
More information about the crossfire
mailing list