Jump to content

Suggested methods for working with a Subversion server


Recommended Posts

We recently got a new Windows Server, with the intent (among other things) of using it to do SCC, since our number of developers has grown and, respectively, the need for a single code base. Following the recommendations here, I decided on SVN with TSVN, but I'm trying to figure out a couple of things which don't seem to be covered by the existing threads -

  • Apache or SVNserve?
    I installed Apache already, but I can still change it. They both seem to require configuration through text files, so there doesn't seem to be any real difference there (does anyone know of a tool with a GUI for this?), but Apache seems to have an advantage due to the next point.
  • What do I do with new projects?
    It seems that for each project I have to create an empty folder in the repository area and then explicitly create a new repository. This means that I have to provide at least one of the users with write access to the repository area or log in to the server when creating a new project.
    This is further complicated by the fact that you can't browse the repositories from the repo browser, so you have to explicitly provide the repository name the first time. The TSVN FAQ says that this is a built-in feature of SVN, so basically the only way to browse repositories is to use a web browser.
    So what do I do - use a single repository and put all projects in it (sounds ugly) or use some other method (like emailing all the developers when a new repository is created or holding a central listing of all the existing repositories [or both])?
  • In the same area - is there an easy way of creating a check out script or something similar so that I can check out all existing projects to a new computer, or should I leave this mindset and have just the projects I need on each computer?
  • How about the Trunk\Branches\Tags directory structure? In your experience, is that useful for LV projects? If it is, should this be by project (sounds more logical than the alternative)?

There are probably some other questions I should ask and which I'm not thinking of, but I'm sure this will do for a start. If anyone has any other useful advice about this topic I'd be delighted to hear it.

Link to comment

Yen,

Here are my thoughts...

Use Apache -- you get SSL for free and ports 80 and 443 will get past nearly all firewalls (if you have an externally visible IP address). Also, if your repository is served by a windows machine, you can use NT Domain Authentication (with the right Apache Mod).

Set up a single repository for all your projects and use the following structure:

/trunk/projects/ProjectName1/

/trunk/projects/ProjectName2/

/branches/projects/ProjectName1/BranchName1/

/branches/projects/ProjectName1/BranchName2/

/tags/projects/projectname1/TagName1/

/tags/projects/projectname1/TagName2/

This will allow you to easily checkout a sandbox of all your projects (/trunk/projects/), without getting any of the branches or tags.

The only downside, is that you will need to configure your access file settings in triplicate (one for each project's trunk, one for each project's branches, and one for each project's tags), but the benefits far outweigh this minor annoyance.

Thanks,

-Jim

Link to comment

Hi,

I've also some questions that's SCC / SVN related. I don't have SVN repository set up yet.

  1. I heve heard rumors that SVN cannot handle renames. Instead of file being renamed in the repository, the old files is marked as deleted and a new file is created. LabVIEW on the other hand requires renames to occur inside LabVIEW project or files don't get properly updated. So what's your experience of renaming files with LabVIEW when you use SVN as your SCC provider directly or using Tortoise?
  2. LabVOOP projects require compiling all project files all the time. That means that every single file in the project gets updated when ever you do something. Has anybody used SVN with LabVOOP? How to deal with files that get constantly updated? Do I always need to check out the whole project and then check the whole project back in?
  3. Has anybody good experience on other SCC products like bitkeeper or sourcehaven?
  4. Does SVN repository allow incremental backups or is everything stored in one large file that keeps growing and needs to be backed up complitely every time? (this may not be a problem with LabVIEW projects but if I use SVN to store data files as well then it is)

EDIT: I'd really appreciate if someone would like to write a knowledege base article on using SVN together with LabVIEW (8.0 and later).

Link to comment

Thanks Jim.

This answers at least some of the questions.

Some other things that popped to mind:

  • Is the Trunk\Branches\Tags structure really useful for LV? I can't say I fully understood it.
  • Do you include your builds and installers in the repository, store them in a seperate location on the hard drive or simply exclude them from the repository?
  • How about configuration files? I've had the bad habit of saving them under the program's folder, but I'm trying to move to properly making room for them in the APPDATA folder. Should they also be included?
  • And how about the Treat Read only VIs as Locked option?
    I read in more than one place that it's useful to use this when using SCC, but I can't say I fully understood this yet. In my experience with SVN so far (single user, single computer) the VIs don't need recompiling. Is this something I would want to use?

QUOTE(Tomi Maila @ Mar 5 2007, 09:58 PM)

Does SVN repository allow incremental backups or is everything stored in one large file that keeps growing and needs to be backed up complitely every time?

When you commit, SVN only stores the differences since the last time you commited. Each revision has all changes saved to a single file. As far as I know, the changes which are saved do not require saving the entire file which was changed, so if you change a small portion of a large file, it will only take a small amount of hard drive space, but I haven't checked this.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.