wiki:ARB-SVN-Repository

ARB-SVN-Repository

You can browse the source in trac:

or directly in SVN:

or you download a source-tarball

(Note: source-tarballs are included in all older and recent 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

http://dev.arb-home.de/statsvn/loc_small.png

External SVN access

read access

Checkout the development trunk using

svn co http://vc.arb-home.de/readonly/trunk ARB

or the latest stable release using

svn co http://vc.arb-home.de/readonly/branches/stable ARB

write access

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

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@….

Conventions

  • 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

cd $ARBHOME/PATHTODELETEDFILE
svn cp http://vc.arb-home.de/svn/trunk/PATHTODELETEDFILE/DELETEDFILE@FROMREVISION .

Revert commits

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

Branching and Merging

Branching

  • create YOURBRANCH from lastest trunk revision
    svn cp http://vc.arb-home.de/svn/trunk http://vc.arb-home.de/svn/branches/YOURBRANCH
    
  • create YOURBRANCH from specific trunk revision
    svn cp http://vc.arb-home.de/svn/trunk@REVISION http://vc.arb-home.de/svn/branches/YOURBRANCH
    
  • 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 http://vc.arb-home.de/svn/branches/YOURBRANCH YOUR_DIR

Merging

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 http://vc.arb-home.de/svn/trunk .
      
    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 http://vc.arb-home.de/svn/branches/YOURBRANCH
    
  • 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 http://vc.arb-home.de/svn/branches/YOURBRANCH
      
  • merging from trunk to YOURBRANCH
    • cd into a checkout of YOURBRANCH
      svn merge -c CHANGESET http://vc.arb-home.de/svn/trunk
      

Then

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

CHANGESET can be

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

Deleting branches

svn delete http://vc.arb-home.de/svn/branches/OBSOLETEBRANCH

See Branching and Merging for details


hax

  • Post-edit commit comments:
    • [Done once: Create hook pre-revprop-change in REPOSITORY/hooks]
    • Example:
      svn propset --revprop -r REVNUM svn:log "new logtext" http://vc.arb-home.de/svn
      
      or to edit in vi
      svn propedit --revprop -r REVNUM --editor-cmd vi http://vc.arb-home.de/svn
      
    • trac has to be resynced afterwards (done frequently by cronjob)
Last modified 2 years ago Last modified on Oct 9, 2015, 12:48:29 PM

Attachments (1)

Download all attachments as: .zip