The development source code for Gwydion Dylan, Open Dylan, and
collections of Dylan libraries and example code is
stored in a Subversion
repository. For developers, the base URI of the repository is

svn+ssh://svn.gwydiondylan.org/scm/svn/dylan

For example, to check out src/ (Gwydion Dylan) from the
trunk, you can execute:

$ svn co svn+ssh://svn.gwydiondylan.org/scm/svn/dylan/trunk/src src

To check out the fundev-2-1-jam branch of Open Dylan,

$ svn co svn+ssh://svn.gwydiondylan.org/scm/svn/dylan/branches/fundev-2-1-jam/fundev fundev

You could also check out the entirity of trunk:

$ svn co svn+ssh://svn.gwydiondylan.org/scm/svn/dylan/trunk gd

For non-developers, the base URI to check out is

svn://anonsvn.gwydiondylan.org/scm/svn/dylan

as described on the downloading page.

Repository Layout

The repository layout is more-or-less conventional for Subversion
repositories. The top level contains three directories:

trunk/
Latest development versions of all “modules”
tags/
Historic archival versions. Tagging is done by copying a
subtree from the trunk or a branch to a directory under tags/. A
repository pre-commit hook ensures only new copies, and not
modifications, are permitted on tags.
branches/
One directory for each active development branch. Like tags,
branches are usually created by copying a subtree of the trunk to
one of the directories under branches/. Branches can be
renamed if necessary, and it is conventional to delete “dead” or
obsolete branches (e.g., after they’ve been merged onto
trunk/)… after all, they’re under version control.

Currently Active Branches

The currently active branches
are:

GD_2_4/
The Gwydion Dylan 2.4.x stable development branch.
gd-2-5-collection-optimization/
See Bug #7094
fundev-2-1-gdb-nub
See Bug #7032

Using CVSZilla

We use the CVSZilla tool to
track development “threads”. CVSZilla associates each commit to the
repository with a Bugzilla entry, and adds
commit log entries as comments to the associated bug(s). The CVSZilla
database can also be searched
in various ways.

Most development work should be preceded by the filing of a
bug or enhancement requrest in Bugzilla. Small changes can be vetted
for comment by attaching patches to the bug and bringing it to the
attention of other developers. (Larger development projects should be
associated with a branch, allowing it to be reviewed before it is
merged back to trunk/.

When changes are comitted, the first line of the commit log must be of
the form:

Bug: bug-number ...

so that CVSZilla can annotate the bug(s).

If a commit is a one-off change (not part of a development thread)
and doesn’t fix a particular bug, you can use one of the general
development jobs
. In this case the first line of the commit log
should look like:

Job: job-name ...

Line Endings

Unlike CVS, Subversion does not convert line-ending styles unless
it is asked to; otherwise file contents are left alone no matter on
what platform you do a checkout. To ensure that text files get LF
line-endings on Unix-line platforms and CRLF line-endings on Win32,
you need to add to text files.

The easy way to ensure that new files are added with this property
present is to use the Subversion auto-props
feature. In your ~/.subversion/config file you’ll find
commented-out configuration entries for enabling auto-props. For example,

### Section for configuring miscelleneous Subversion options.
[miscellany]
### Set enable-auto-props to 'yes' to enable automatic properties
### for 'svn add' and 'svn import', it defaults to 'no'.
### Automatic properties are defined in the section 'auto-props'.
enable-auto-props = yes

### Section for configuring automatic properties.
### The format of the entries is:
###   file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?').  All entries which match will be applied to the file.
### Note that auto-props functionality must be enabled, which
### is typically done by setting the 'enable-auto-props' option.
[auto-props]
*.bat = svn:mime-type=text/plain;svn:eol-style=native
*.bmp = svn:mime-type=image/bmp
*.c = svn:mime-type=text/plain;svn:eol-style=native
*.css = svn:mime-type=text/css;svn:eol-style=native
*.cpp = svn:mime-type=text/plain;svn:eol-style=native
*.cxx = svn:mime-type=text/plain;svn:eol-style=native
*.dylan = svn:mime-type=text/plain;svn:eol-style=native
*.dylgram = svn:mime-type=text/plain;svn:eol-style=native
*.el = svn:mime-type=text/plain;svn:eol-style=native
*.gif = svn:mime-type=image/gif
*.h = svn:mime-type=text/plain;svn:eol-style=native
*.hdp = svn:mime-type=text/plain;svn:eol-style=native
*.htm = svn:mime-type=text/html;svn:eol-style=native
*.html = svn:mime-type=text/html;svn:eol-style=native
*.ico = svn:mime-type=image/x-icon
*.idl = svn:mime-type=text/plain;svn:eol-style=native
*.intr = svn:mime-type=text/plain;svn:eol-style=native
*.jam = svn:mime-type=text/plain;svn:eol-style=native
*.java = svn:mime-type=text/plain;svn:eol-style=native
*.jpeg = svn:mime-type=image/jpeg
*.jpg = svn:mime-type=image/jpeg
*.lid = svn:mime-type=text/plain;svn:eol-style=native
*.lisp = svn:mime-type=text/plain;svn:eol-style=native
*.lout = svn:mime-type=text/plain;svn:eol-style=native
*.m4 = svn:mime-type=text/plain;svn:eol-style=native
*.pdf = svn:mime-type=application/pdf
*.pl = svn:mime-type=text/plain;svn:eol-style=native;svn:executable
*.png = svn:mime-type=image/png
*.py = svn:mime-type=text/plain;svn:eol-style=native;svn:executable
*.rc = svn:mime-type=text/plain;svn:eol-style=native
*.sgm = svn:mime-type=text/sgml;svn:eol-style=native
*.sgml = svn:mime-type=text/sgml;svn:eol-style=native
*.sh = svn:mime-type=text/plain;svn:eol-style=native;svn:executable
*.spec = svn:mime-type=text/plain;svn:eol-style=native
*.sql = svn:mime-type=text/plain;svn:eol-style=native
*.tif = svn:mime-type=image/tiff
*.tiff = svn:mime-type=image/tiff
*.text = svn:mime-type=text/plain;svn:eol-style=native
*.txt = svn:mime-type=text/plain;svn:eol-style=native
*.xhtml = svn:eol-style=native
*.xml = svn:mime-type=text/xml;svn:eol-style=native
INSTALL = svn:mime-type=text/plain;svn:eol-style=native
Makefile = svn:mime-type=text/plain;svn:eol-style=native
Makefile.in = svn:mime-type=text/plain;svn:eol-style=native
README = svn:mime-type=text/plain;svn:eol-style=native

For More Information

  • The Top Ten Subversion Tips for CVS Users
  • Version Control with Subversion
  • CVS to SVN Crossover Guide
  • Subversion Best Practices
  • Subversion FAQ
  • Subversion Quick Reference Card
  • TortoiseSVN (Win32 Explorer shell integration)