views:

212

answers:

4

I've been tasked with setting up a version control for our web developers. The software, which was chosen for me because we already have other non-web developers using it, is Serena PVCS.

I'm having a hard time trying to decide how to set it up so I'm going to describe how development happens in our system, and hopefully it will generate some discussion on how best to do it.

We have 3 servers, Development, UAT/Staging, and Production. The web developers only have access to write and test their code on the Development server. Once they write the code, they must go through a certification process to get the code moved to UAT/Staging, then after the code is tested thoroughly there, it gets moved to Production.

It seems like making the Developers use version control for their code on Development which they are constantly changing and testing would be an annoyance. Normally only one developer works on a module at a time so there isn't much, if any, risk of over-writing other people's work.

My thought was to have them only use version control when they are ready to go to UAT/Staging. This allows them to develop and test without constantly checking in their code.

The certification group could then use the version control to help see what changes had been made to the module and to make sure they were always getting the latest revision from the developer to put up on UAT/Staging (now we rely on the developer zip'ing up their changed files and uploading them via a web request system).

This would take care of the file side of development, but leaves the whole database side out of version control. That's something else that I need to consider...

Any thoughts or ideas would be greatly appreciated. Thanks.

+1  A: 

Using source control isn't any annoyance, it's a tool. Having the benefits of branching and tagging is invaluable when working with new APIs and libraries.

And just a side note, a couple of months back one of the dev's machine's failed and lost all his newest source, we asked when the last time he committed code to the source control and it was 2 months. Sometimes just having it to back up stuff when you reach milestones is nice.

I usually commit to source control a couple of times a week, depending if I've hit a good stopping point and I'm about to move on to something different or bigger.

Nick
A couple of times a week? Wow...I commit at least 2-3 times a day. I think one day, I committed about 10 times...
Thomas Owens
+6  A: 

I would not treat source control as annoyance. See Nicks answer for the reasons.

If I were You, I would not decide this on my own, because it is not a matter of setting up a version control software on some server but a matter of changing and improving development procedures.

In Your case, it might be worth explaining and discussing release branches with Your developers and with quality assurance. This means that Your developers decide which feature to include into a release and while the staging crew is busy on testing the "staging" branch of the source, Your developers can already work on the next release without interfering with the staging team.

You can also thing about feature branches, which means that there is a new branch for every specific new feature of the web site. Those branches are merged back, if the feature is implemented.

But again: Make sure, that Your teams agreed to the new development process. Otherwise, You waste Your time by setting up a version control system.

The process should at least include:

  • When to commit.
  • When to branch/merge.
  • What/When to tag.
  • The overall work flow.
Black
Thanks. I have been in contact with the other development groups, but those that have development styles like us (one developer per project), simply leave it up to the developer on how to use it (when to commit/branch/merge). I need to develop a set of standards for our developers so I don't have them doing 1000 different things, 1000 different ways and when projects get handed off, the new developer will have a clue.
Brad
A: 

Following on from the last two good points I would also ask your other non-web developers what developmet process they are using so you won't have to create a new one. They would also have encountered many of he problems that occur in your environment, both technical using the same OS and setup and managerial.

Mark
+2  A: 

I have used Serena, and it is indeed an annoyance. In addition to the unpleasantness of the workflow overhead Serena puts on top of the check in-check out process, it is a real pain with regard to doing anything besides the simplest of tasks.

In Serena ChangeMan, all code on local machines is managed through a central server. This is a really bad design. This means a lot of day-to-day branch maintenance work that would ordinarily be done by developers has to go through whomever has administrator privileges, making that person 1) a bottleneck and 2) embittered because they have a soul-sucking job.

The centralized management also strictly limits what developers are able to do with the code on their own machine. For example, if you want to create a second copy of the code locally on your box, just to do a quick test or whatever, you have to get the administrator to set up a second repository on your box. When you limit developers like this, you limit the productivity and creativity of your team.

Also, the tools are bad and the user interface is horrendous. And you will never be able to find developers who are already trained to use it, because its too obscure.

So, if another team says you have to use Serena, push back. That product is terrible.

Spike Williams
oh please tell me more - it is a terrible product but I now have the task of proving that to management.
gbjbaanb