Subversion repository

Basic information

As of late, VideoLAN is migrating all it's CVS repositories to Subversion repositories. Subversion (SVN) was built to be like CVS, but without many of it's faults. This could only be done by breaking backwards compatibility with CVS. It will be a bit painful at first for some people but will pay of big time in the end. Currently there are scripts in place that will keep our old CVS repositories available to anonymous CVS users. All developers have to use SVN though. If you had a CVS account before, but no SVN account yet, then mail the Developer Mailinglist.

The SVN server is called For instance to retrieve the HEAD vlc source:

svn co svn:// vlc-trunk

In case you do not have access to the repository for some reason, or if you are plain lazy, you can download nightly development snapshots (source and binary). See the bottom of the page

Available modules


There is no webinterface to the SVN repositories yet. You can browse the CVS repository which is being kept in sync with SVN.

Development tarball snapshots

If you have trouble using SVN, you can use our daily VLC Development snapshots.

VLC nightly builds

We have nightly builds of VLC for Windows and Debian Woody

Write access policy

As usual in opensource projects, you get write access to the CVS repository when you have shown your skills and ability to write good patches :)

Useful SVN tips

Here are some SVN usage tips by Sam Hocevar

Repository layout

There are three directories at the root of a SVN repository: trunk, branches, tags. The trunk directory is similar to the HEAD branch in CVS: it contains the most recent vlc tree. The branches and tags directories contains copies of the trunk at different times.

Never download a full svn tree! It would download several hundreds of megabytes. Instead, only get the trunk directory, like that: $ svn co svn:// vlc-trunk If you need a specific branch or tag, (eg. branch 0.2), use this: $ svn co svn:// vlc-0.2 If you need to know which branches are available, use "svn ls": $ svn ls svn:// 0.2 0.2.92 0.4.1 $ Note that you only need to authenticate yourself when you want to commit something. You do not need to enter a password when you checkout the sources.

Moving files

No longer create new files from scratch when moving files! Use "svn mv": $ svn mv file1 file2 It also works for entire directories.

Splitting files

Do not create a new file from scratch! Instead, copy the old file using "svn cp", remove the old file and modify both newly created files: $ svn cp old new1 $ svn cp old new2 $ svn delete old [edit new1 and new2] $ svn commit

Getting information about locally modified files

Use "svn status" to know which files were modified, deleted or created. A network connection is not needed for that, do not use "svn update" just to know your local modifications.

"svn diff" does not require a network connection either if you only want to show your local modifications.


There is no filesystem equivalent to .cvsignore. Instead, metadata are used. To edit the ignore list for a given directory, use this: $ svn propedit svn:ignore mydirectory


$Id is no longer automatically taken in account; instead, it has to be activated in a per-file basis using properties: $ svn propedit svn:keywords myfile Just add "Id" to the list of properties.