You can browse the source in trac:

or directly in SVN:

or you download a source-tarball:

  • Source-tarballs are included in all published builds.
    Pick arbsrc.tgz or something named like arb-r11968-source.tgz)

But the recommended way to access ARB source is to checkout a local copy using SVN, as described below.

SVN stats

External SVN access

read access

Checkout the development trunk using

svn co ARB

or the latest stable release using

svn co ARB

write access

  • You'll need a user/password combination to gain external write access.
    Ask devel@….
  • Checkout trunk using
    svn co ARB
  • If you receive an error message like
    svn: OPTIONS of '': authorization failed: 
    Could not authenticate to server: rejected Basic challenge (
    you may edit your ~/.subversion/config to contain

Submit patches

If you have made patches to ARB, dont have write access to the repository and would like to share them with the public, use

svn diff >my.patch

to create a patchfile and send it together with a short description to devel@….


  • When commiting changed code to the repository please separate between
    • real changes and
    • cosmetic changes (where you only change indentation, TABs, etc.)

and commit both separately. Otherwise it is extremly difficult to track real changes.

  • Try to keep changesets compact (do not change 10 different things and checkin them all together)
  • On commit provide comments describing what changed why.

Restoring deleted files

To restore a deleted file together with it's history use

svn cp .

Revert commits

  • To revert a single commit use
    svn merge -c -REVISION .
  • To revert several commits use
    (example: svn merge -r 123:122 . is the same as svn merge -c -123 .)

Branching and Merging


  • create YOURBRANCH from lastest trunk revision
    svn cp
  • create YOURBRANCH from specific trunk revision
    svn cp
  • Warning: svn cp cannot be used to copy over an existing branch (cause this will just copy the source branch into the existing destination branch).

To create a working checkout (WC) from YOURBRANCH call

svn co YOUR_DIR


Keep your branch up-to-date with parent branch

  • frequently merge changes from the parent branch (normally 'trunk') of YOURBRANCH to avoid that they diverge
    1. first create a fresh WC from YOURBRANCH (as decribed above) and cd into that WC
    2. detect base revision of YOURBRANCH:
      svn log --stop-on-copy | tail
      The last revision shown is the revision where YOURBRANCH has been branched (the revision number is referred to as BASEREV below).
    3. merge all changes from trunk
      svn merge --accept postpone -r BASEREV:HEAD .
    4. if no conflicts exist, compile + test + commit
    5. if postponed conflicts exist:
      • consider merging in multiple steps: first merge some revisions that do not conflict; then merge conflicting trunk-changes separately.
        Do this from lower to higher revision numbers: if e.g. revision REVPROBLEM does not merge without conflicts into YOURBRANCH,
        • first merge -r BASEREV:REVPROBLEM-1,
        • then attempt -r REVPROBLEM,
        • if sucessful continue with -r BASEREV:HEAD. Commit after each successful partial merge.
      • if you do not understand a conflict, please contact the author of the conflicting trunk-changeset
    6. perform svn update in all modified WCs of YOURBRANCH and resolve local conflicts.

Merge all changes from a branch back to parent

This only works for branches created after [8425]! See BranchInfo (column 'svn:mergeinfo ok?' in tables).

  • go to a frash WC of destination branch
  • call
    svn merge --reintegrate
  • now it's mandatory to delete the reintegrated branch (otherwise you'll run into future problems). See section below for howto. You may instantly re-create YOURBRANCH if intended.

Single merges

Single merges are not recommended in general. Normal workflow should be:

  • branch
  • change+regular updates from parent
  • reintegrate

Anyway if you need it for some reason:

  • merging from YOURBRANCH to trunk
    • cd into a checkout of trunk
      svn merge -c CHANGESET
  • merging from trunk to YOURBRANCH
    • cd into a checkout of YOURBRANCH
      svn merge -c CHANGESET


  • check conflicts + test
  • check in changes (please add CHANGESET to log message)


  • REV (one changeset)
  • REV1,REV2,REV3 (specific changesets)
  • REV1:REVn (range of changesets)

Deleting branches

svn delete

See Branching and Merging for details


  • Post-edit commit comments:
    • [Done once: Create hook pre-revprop-change in REPOSITORY/hooks]
    • Example:
      svn propset --revprop -r REVNUM svn:log "new logtext"
      or to edit in vi
      svn propedit --revprop -r REVNUM --editor-cmd vi
    • trac has to be resynced afterwards (done frequently by cronjob)
  • sometimes trac-svn-sync will be broken by single syncs
    • effect: new revisions will no longer show up in trac timeline
    • can be fixed using
      trac-admin /path repository resync '(default)'
      Warning: this will take about ~30 minutes for 17000 revisions on current host
Last modified 3 years ago Last modified on Sep 2, 2021, 7:17:10 PM

Attachments (1)

Download all attachments as: .zip