Using_SVN

haochuan

Using SVN

SVN eats my lunch every time I do something more difficult than status, update, or commit.
This page is here to record some hard-won successes in hopes that I can repeat them.

SVN Organization for portmedia

  • The intent is to support several subprojects within one repository.
  • To achieve this, the top-level of the repository is a set of directories, e.g. portmidi, portsmf, and scorealign.
  • These top-level directories are not located below trunk, branch, or tags directories.
  • Within each subproject (e.g. portmidi, portsmf, or scorealign), there are the usual trunk, branch, and
    tags directories, and within trunk is the main version sequence of the subproject.

Client Organization of portmedia

You could simply do a checkout of portmedia, but I gather that normally you would check out the trunk of a project.
Notice, however, that portmedia has trunk directories within each subproject directory.
Therefore, in order for portmedia to work correctly, the directories must be arranged as seen below, without the trunk directories:

  • portmedia
    • portmidi
      • source code
    • portsmf
      • source code
    • scorealign
      • source code

The easiest way to obtain this layout is to checkout each subproject separately:

mkdir portmedia ; cd portmedia
svn co https://portmedia.svn.sourceforge.net/svnroot/portmedia/portmidi/trunk portmidi
svn co https://portmedia.svn.sourceforge.net/svnroot/portmedia/portsmf/trunk portsmf
svn co https://portmedia.svn.sourceforge.net/svnroot/portmedia/scorealign/trunk scorealign

This eliminates the trunk directories on your machine and increases the chances of portmedia working correctly.

Creating a new subproject

svn mkdir https::portmedia.svn.sourceforge.net/svnroot/portmedia/subproject
svn mkdir https::portmedia.svn.sourceforge.net/svnroot/portmedia/subproject/trunk
svn mkdir https::portmedia.svn.sourceforge.net/svnroot/portmedia/subproject/branches
svn mkdir https::portmedia.svn.sourceforge.net/svnroot/portmedia/subproject/tags
cd portmedia
svn co https:://portmedia.svn.sourceforge.net/svnroot/portmedia/subproject/trunk subproject

Explanation: this makes subproject, subproject/trunk, subproject/branches, and subproject/tags in the root portmedia svn repository. Then, it checks out the trunk to the local copy.

Now you can copy files to the local subproject directory or create new files there and "svn add" them to the configuration.