Effective strategy for using VSS in a development team?

R

Rick

I'm sorry for posting this here, but other more relevant groups are a little
too quiet.

Has anyone out there come up with an effective strategy for using VSS with a
development team? IME it is a nightmare trying to manage releases of code.
We need one release to share among developers, one for the QA team, and one
for the live application. The problem is, VSS really only has one version at
any one time. I'm guessing that VS2005 Team Suite has better versioning, but
that's too expensive ($10K+) for our small team.

Does anyone have any tips on how to make the best of what we have (VS2003 +
VSS 6, or VS2005 + VSS.NET). Thanks!
 
C

Chris Mullins

Rick said:
Has anyone out there come up with an effective strategy for using VSS with
a development team?

What size projects are you talking? 20 developers over 3 years? or 2
developers over 6 months?
IME it is a nightmare trying to manage releases of code. We need one
release to share among developers, one for the QA team, and one for the
live application.

VSS is not a source code control system built for this. It's really for
small projects.You can work around this with creating use of labels and
pinning, but....

You should look at some of the bigger systems - StarTeam, Rational, Team
System, and a few others. These are all very expensive, but probably less
expensive that have a large number of people work inefficiently over a long
period of time. You can absolutly put metrics on what VSS is costing you in
terms of lost productivity, and make a decision from there.

At the lower end you have some others - Subversion is an open source option
(albiet one I'm really not too familure with), Sourcegear's Vault is an
excellent option, although it runs into some of the same limitations as
Source Safe, in that it's made for smaller projects, and doesn't really have
the workflow that you're looking for.
Does anyone have any tips on how to make the best of what we have (VS2003
+ VSS 6, or VS2005 + VSS.NET). Thanks!

The projects I work on generally use:
1 - Vault for source code control
2 - Dragnet for bug tracking
3 - NAnt or MSBuild for a build process
4 - NUnit for Testing
5 - FxCop for coding standards enforcement
6 - MSI Files for deployment

I tend to work on small to medium projects (3 to 12 months, 1-10 people),
and have found this tool suite to work fairly well.
 
J

Jon Skeet [C# MVP]

Rick said:
I'm sorry for posting this here, but other more relevant groups are a little
too quiet.

Has anyone out there come up with an effective strategy for using VSS with a
development team?

Absolutely.

Step 1: Install CVS
Step 2: Install Subversion
Step 3: Convert VSS databases to CVS
Step 4: Convert resulting CVS database to Subversion
Step 5: Use Subversion, it's lovely.

Subversion is free, and so much better than VSS it's not even funny.

If you don't need the history of the files on a regular basis, you can
even make the above simpler - just fetch from VSS and import straight
into Subversion with no intermediate CVS step. (There happen to be
VSS->CVS and CVS->Subversion conversion tools around which will keep
the history.) You could always keep the VSS databases around for
looking at "old" history when you need to.

Jon
 
C

Chris Mullins

[Use Subversion over VSS]
Subversion is free, and so much better than VSS it's not even funny.

While I'm in the "Anything is better than Source Safe" camp, I'm curious
what you like about Subversion? I've only glanced at it, but it seemed like
another source control system. I liked that it was based on WebDav and would
be suitable for remote development, but other than that what features are in
there that you like?

Does it integrate into the VS.NET 2005 IDE? I didn't make much use of Source
Control Integration in VS.NET 2003, but the new round of integration points
from both Microsoft (for VSS) and SourceGear (for Vault) is leaps and bounds
ahead of where it was a few years ago. I would have a hard time giving this
up...

Is there a bug tracking tool that integrates with it? (Sourcegear's Vault
has this, but their bug tracking tool could be quite a bit better). I would
like to be able to check code in, and have it tied to an issue #, so that I
can later look and see what was worked on from a bug perspective.

Lastly, does Subversion support workflow? I would love to have code checked
in every night (for backup - call this level 1), checked in for code review
(call this level 2), checked in and part of the nightly build (call this
level 3).
 
G

Guest

Chris Mullins said:
Lastly, does Subversion support workflow? I would love to have code checked
in every night (for backup - call this level 1), checked in for code review
(call this level 2), checked in and part of the nightly build (call this
level 3).

Maybe I'm not understanding correctly, but this seems like a recipie for a
broken build by forcing incomplete and potentially nonfunctional code to be
checked in.
 
C

Chris Mullins

Dan Neely said:
Maybe I'm not understanding correctly, but this seems like a recipie for a
broken build by forcing incomplete and potentially nonfunctional code to
be
checked in.

Absolutly - unless the source code control system understands this.

A fairly common use case that I run into is: I want to make a large change,
and it's going to take me about 10 days. During this time, I am unable to
check-in any code as it will break the build if checked in prematurly. This
means over a 10 day period I'm operating without the benefits of source code
control - on day 1 I checked out the files, on day 10 I checked them in. In
between I had no revision history, no nightly backups, and no effective
version based bug tracking.

This is a bad place to be, as I want source code control tracking my changes
during that 10 day period. What I don't want are those changes promoted to
the main codebase - I want to operate in my own little sandbox. When I'm all
done, on day 10, I hit, "Check-In and Promote" and everything is now part of
the build.

On day 4, when my nightly build process ran and got the latest from the SCC
system, it did not get the code that's in my personal sandbox.

To add one more layer to this, once my changes are done and promoted, I
really don't want to be part of the build yet - I want them to be marked as
"Code Review Required". Then someone else (whoever is designated) gets the
files, performs a code review, (hopefully) approves it, and NOW it's part of
the main code tree.

These are enterprise class source code control features - and these features
are not offered by the low end systems like SourceSafe. Unfortunatly the
systems that do offer this are very, very expensive. If Subversion has these
features, I would give some very serious thought to moving away from Vault
(what we use now) to Subversion.
 
J

Jon Skeet [C# MVP]

Chris Mullins said:
[Use Subversion over VSS]
Subversion is free, and so much better than VSS it's not even funny.

While I'm in the "Anything is better than Source Safe" camp, I'm curious
what you like about Subversion?

Pretty much everything I've used about it. Some things though:

1) It's really fast (compared with VSS)
2) Proper changeset support
3) Fully transactional
4) Properly client-server (only diffs go each way)
5) To see what you've changed, you don't even need to go to the server
(unless you want to see recent changes of other people)
6) Good merge support
7) Really cheap branching
8) Flexible and versioned metadata
9) Each working copy knows where it belongs on the server rather than
the other way round - having multiple copies of the source around
isn't difficult at all, if you want it.
10) Using "switch" means that you don't *need* multiple copies around
as often. Working on a branch and want to go to a different one?
Just switch... basically you can do Team System's "shelving" pretty
easily, just in a few more steps.
11) Directories are versioned as well as files.
12) No attic! (vs CVS...)
13) Renaming is supported without losing history (or affecting
other branches) - a rename is just a "copy object" followed by
a "delete old object" in the same transaction.
14) It's free.
15) The book (http://svnbook.red-bean.com/nightly/en/svn-book.pdf)
is also free, and really good.
I've only glanced at it, but it seemed like
another source control system. I liked that it was based on WebDav and would
be suitable for remote development, but other than that what features are in
there that you like?

Well, it's not *just* based on webdav - there are various ways to
access it. We use the "native" svn protocol at work.
Does it integrate into the VS.NET 2005 IDE? I didn't make much use of Source
Control Integration in VS.NET 2003, but the new round of integration points
from both Microsoft (for VSS) and SourceGear (for Vault) is leaps and bounds
ahead of where it was a few years ago. I would have a hard time giving this
up...

There are a couple of SCC plugins which I haven't tried, and Ankh which
I've tried briefly. Ankh's not really finished yet, but I haven't
investigated further as I'm not using VS at the moment. The Eclipse
plugin is good though :)

TortoiseSvn is a good Windows client, if you don't mind it not being
integrated into VS. (It's an Explorer plugin.)
Is there a bug tracking tool that integrates with it? (Sourcegear's Vault
has this, but their bug tracking tool could be quite a bit better). I would
like to be able to check code in, and have it tied to an issue #, so that I
can later look and see what was worked on from a bug perspective.

I believe it's integrated with a number of bug systems, but if the one
you want to work with has appropriate ways into it, SVN has a
reasonably flexible set of hooks, so you can do things like getting
which bug number has been fixed out of the comment (so long as people
follow a convention), then talk to a web service (or whatever) to
update your bug database.
Lastly, does Subversion support workflow? I would love to have code checked
in every night (for backup - call this level 1), checked in for code review
(call this level 2), checked in and part of the nightly build (call this
level 3).

You could easily do that with branching/merging - have a "private"
branch for your own checkins, then use its merge facilities to roll
those changes into the next branch up when you're ready for that, then
the next etc until you reach the main line.
 
R

Rick

Jon Skeet said:
Subversion is free, and so much better than VSS it's not even funny.

Thanks Jon, that looks like a real winner. I'm going to take some time and
try it out.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top