How can we improve the use of SVN?

I started a new job almost two years ago, and the SVN repository process already exists. This process has become what it is because it has never been decided how best to look to the future in order to use SVN to manage the codebase. Now we are in a situation where we need to make changes before we grow much larger. We are looking for the best way to use SVN for our needs.

  • We have a basic structure in which all our client code is located on top of which is managed in one repository.
  • We also have a repository where we manage all our perl user modules and a repository, where we manage all our skins for the basic structure.
  • Then we have storage facilities for each of our customers' business units.

There is code in all of these repositories, which are sometimes duplicated in the / var / www, / usr / local, / opt directories and their subdirectories.

So far, we have managed to do this by making our changes in the server workspace (/ var / www, / opt, / usr), and then moving all our changes and their directory structure to a working copy in ours where we can execute our svn- operations on these files.

I did some experimenting with checking the repositories on top of the server root, but then I need to complete all my svn operations. Another problem is that if I switch to the repository for the client, and I have to make changes to the basic structure, are these changes tracked? Will they be included in the svn stat of repository-for-customer-a? Or, if I perform an SVN transaction, will the server transfer files to both repositories at the same time?

Managing SVN the way we do is completely inefficient and responsible, because the files that are needed to fix / change will often be skipped, and when it comes to merging code with the trunk, we do not use SVN fork / merge, so for our gatekeepers much more work. There is a lot of overhead in our processes that can be fixed here if we can just figure out how to use SVN the way it was intended to be used.

I came to Stack Overflow because I really respect the format and community here. Any advice is appreciated!

+4
source share
1 answer

Your workflow will improve significantly if you clearly separate the source code and the installed program. The code should come from the location of the source (not of production significance) to the specified location, for example:

http://your-svn-server | checkout v /home/local-checkout | make install v /var/www /opt /usr 

Make sure that code never moves in this hierarchy except svn commit . Especially not monkey-patch / var / www, and then copy the files to your extracted folder. You will never copy all relevant changes.

It sounds like a lot of work, but it is not. A make install script usually takes very little time to run, especially when the compiler is not involved. On the other hand, a specific deployment procedure will help you in the future when you want to switch to another block or just install anything on a new machine.

+1
source

All Articles