SVN

From UFO:AI

Contents

About SVN

wikipedia svn article

SVN usage

Branches/Tags Releases

Read more about that here: Releases/SVN

Merging changes

You can merge changes from trunk into a branch (or vice versa) by using the following commands:

e.g you have made a change in trunk with revision 123. This change should now be merged into the branch_2.0.

cd ufoai_2.0
svn merge -r122:123 https://ufoai.svn.sourceforge.net/svnroot/ufoai/ufoai/trunk
svn commit

or vice versa:

cd trunk
svn merge -r122:123 https://ufoai.svn.sourceforge.net/svnroot/ufoai/ufoai/branches/ufoai_2.0
svn commit

Note: The -r 122:123 tells svn to use the difference between these two revisions from the source and merge them into the working copy.

Read more about svn merge.

Mime-types and EOL style

Prepare Subversion to automagically set EOL and mime-types

Subversion has a nice option named auto-props that takes care of most of the svn properties on adding a file to SVN.


First make sure that enable-auto-props = yes is set in theconfig file.

Then place the following text below the [auto-props] section in the config file:

# Text files
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
*.dsp = svn:eol-style=CRLF
*.dsw = svn:eol-style=CRLF
*.sh = svn:eol-style=native; svn:mime-type=text/x-sh; svn:executable
*.txt = svn:eol-style=native; svn:mime-type=text/plain
*.htm = svn:eol-style=native; svn:mime-type=text/html
*.html = svn:eol-style=native; svn:mime-type=text/html
Makefile = svn:eol-style=native
*.ac = svn:eol-style=native
*.am = svn:eol-style=native
*.m = svn:eol-style=native
*.pl = svn:eol-style=native; svn:mime-type=text/x-perl; svn:executable
*.pdb = svn:eol-style=native; svn:mime-type=text/x-perl
*.py = svn:eol-style=native; svn:mime-type=text/x-python; svn:executable
*.po = svn:eol-style=native
*.qe4 = svn:eol-style=native
*.rc = svn:eol-style=native
*.tex = svn:eol-style=native
*.ufo = svn:eol-style=native
*.ump = svn:eol-style=native

*.svg = svn:mime-type=image/svg+xml

# Images
*.bmp = svn:mime-type=image/bmp
*.gif = svn:mime-type=image/gif
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
*.jpeg = svn:mime-type=image/jpeg
*.tga = svn:mime-type=image/x-tga
*.tif = svn:mime-type=image/tiff
*.tiff = svn:mime-type=image/tiff
*.ico = svn:mime-type=image/x-icon
*.xcf = svn:mime-type=image/x-xcf
*.xcf.gz = svn:mime-type=image/x-compressed-xcf
*.xcf.bz2 = svn:mime-type=image/x-compressed-xcf
*.xbm = svn:mime-type=image/x-xbitmap
*.xpm = svn:mime-type=image/x-xpixmap
*.psd = svn:mime-type=image/psd

# Multimedia
*.ogg = svn:mime-type=application/ogg
*.wav = svn:mime-type=audio/x-wav
*.blend = svn:mime-type=application/x-blender

# Misc
*.exe = svn:mime-type=application/x-executable
*.dll = svn:mime-type=application/x-msdownload
*.zip = svn:mime-type=application/zip
*.pdf = svn:mime-type=application/pdf
*.doc = svn:mime-type=application/msword

The config file for Subversion is found here:

  • Unix/Linux/OsX: ~/.subversion/config
  • Windows (TortoiseSVN): You can edit the svn config from the TortoiseSVN context menu.
  • Windows (general): C:\USERS\USERNAME\applicationdata\Subversion\config FIXME

Fixing most EOL and mime-type settings afterwards

Use the file contrib/scripts/fix to change the svn properties afterwards.

Put this file into trunk/ or make it available for execution in another way.

Now call ./fix

(FIXME: file -i -b filename print the mimetype, too)

Copyright and Licenses in SVN

I general every file in svn should have the following three properties (if the info exists):

Information Description SVN Property Name
Copyright A list of all authors (full name of possible and nickname(s) if used)
svn:copyright
License The exact license the data is placed under (See Licensing)
svn:license
Source Is it a derived work? Provide source url and/or contact address/names.
svn:source

Example

This is an example for the file David01.ogg

svn ps svn:license "Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License" David01.ogg
svn ps svn:copyright "David Reeves (Destructavator)" David01.ogg

The command used here (ps) means propset or "property set".

List existing information

Use the following to show the current properties in the current directory (-R means recursive) :

svn proplist -R -v

Links

project-navigation