From VideoLAN Wiki
Revision as of 08:43, 9 October 2008 by Yanzifei (talk | contribs)
Jump to navigation Jump to search

This page is partially outdated. VLC and x264 have switched to Git.

The VideoLAN's repository is using Subversion, which is ever so slightly trendier than CVS but provides a pretty similar interface so should not be too disruptive. It also provides a better control over the repository. balenciaga bag balenciaga handbag balenciaga handbags balenciaga balenciaga bags chloe bag chloe paddington chloe bags chloe handbag chloe handbags chloe paddington bags chloe paddington bag chloe purse chloe paddington handbag chloe uk dolce gabbana dolce bag dolce gabbana handbags dolce gabbana bag dolce gabbana handbag dior bag dior handbag vintage dior christian dior bag dior handbags dior uk fendi handbags fendi bag fendi purses fendi hand bag fendi spy bag fendi bags discount fendi gucci handbags gucci handbag gucci bag gucci bags gucci wallet gucci vintage gucci online gucci purse gucci fashion hermes birkin hermes kelly bag hermes bag hermes bags hermes birkin bag hermes handbags louis vuitton handbags cheap louis vuitton louis vuitton uk louis vuitton louis vuitton bags buy louis vuitton lv handbag louis vuitton handbag vuitton handbags louis vuitton bag louis vuitton mulberry bag mulberry handbags mulberry handbag mulberry purse mulberry purses discount mulberry discount mulberry handbags mulberry purses mulberry bag prada prada bag prada handbag prada handbags prada bags prada wallets prada hand bags prada handbags gucci uk buy gucci gucci wallets gucci purse gucci fashion cheap gucci gucci online prada bags prada wallets prada purse prada uk prada purse louis vitton wallet louis vuitton purses louis vuitton speedy handbags uk clutch bags ladies bags womens handbag womens handbag fashion handbag luxury handbag leather handbags evening handbag handbags online ladies handbag fashion handbags handbags uk cheap handbags women's handbag bridesmaids dress cheap wedding Dresses 吊索具 HR handbag ladyshoes ansun 手袋 女装鞋 安信 roll forming 冷弯型钢 房地产律师 合同纠纷 糖尿病足 精密铸造 溃疡性结肠炎 结肠炎 肠炎 条码打印机 条形码打印机 中央空调风管清洗 化学清洗 中央空调清洗 空调清洗 清洗公司 英语口语 英语培训 北京安装卫星电视 安装卫星天线 安装卫星电视 温控器 learn mandarin learning Chinese Chinese learn Chinese language 美术培训 画室 美术高考 空气净化器 工业除湿机 抽湿机 除湿机 振动试验机 低温试验箱 高低温箱 盐雾试验箱 盐雾箱 振动台 恒温恒湿箱 恒温恒湿试验箱 高低温试验箱 生活随笔 工作感想 Note that there is also a git mirror of the Subversion tree. You can read more about VideoLAN's git repository in our Git wiki page.

Currently the Subversion repository is hosted on one of the VideoLAN Servers.

To use it, you have to download the official command line Subversion client. You can also use alternative clients, such as the graphical TortoiseSVN for Windows. When using Cygwin as compilation environment it is recommended to use the SVN package that comes with it (using the Cygwin setup). Using an "external" SVN application might otherwise cause problems with so called DOS versus UNIX "line endings" when creating files.

Subversion's command-line interface is generally pretty similar to CVS. This is a basic and partial guide of the most useful commands. For a complete guide, use the book Version Control with Subversion. If you have a write access to the server, it's very recommended that you read it and know about the advanced features of Subversion, because you might use them sooner or later.

Anonymous use

If you don't have a write access to the repository, you have to access it anonymously, via regular SVN. However, most of the techniques shown here may be useful also for developer use, so please read it even if you don't have to access the server anonymously.

Check out

First, you have to check out the code of libdvbpsi. Use the following syntax:

% svn checkout svn:// libdvbpsi-trunk

You can browse the code structure using the VideoLAN Trac's web interface (Trac). Use the three folders there for different purposes:

  • Trunk is the main development branch.
  • The branches are used for stable versions and for the development of complex features.
  • The tags are used to track the released versions.

The URL structure is:

project repository 
/trunk, or /branches/0.8.6, or /tags/0.8.5

You can also checkout a portion of the SVN using the URL.

Don't leave off the "trunk" or branch part! If you leave that off you check out every revision of every file in the repo, which is pretty silly.

Projects on VideoLAN's SVN

Updating the working copy

To update your working copy and get the latest files, use the following command:

% svn update

Note that SVN, unlike CVS, doesn't need to be told to prune removed files or create new directories. This is automagic.

Making a diff

Diffs, or patches, are text files which include all the changes done in the working copy. If you suggest a new feature or like to suggest a change, send a patch to the mailing-list with [PATCH] in the subject.

To create a diff from the current repository, use the following command:

% svn diff

Normally, unlike CVS, you don't have to tell SVN which files you changed; however, you may like to diff only a part of the repository. To do that, specify the files to diff:

% svn diff modules/gui/qt4/qt4.hpp

Note that SVN defaults to the "unified" diff format, so the "-u" option doesn't have to be passed.

Applying a diff

Subversion does not contain a built in command to apply diffs to the current working copy (for example, to review or commit diffs published in Bugzilla); instead, you can use the regular patch unix utility:

% patch -p0 < patch

TortoiseSVN has a built-in support for applying a diff.

.cvsignore / Ignoring files

You can ignore some files, using metadata:

% svn propedit svn:ignore mydirectory

Changing file structure

Add a file

You can add files or folders to the working copy, to be included in the next diff or commit, using the command:

% svn add

If is a text-based document, you should do

% svn propset svn:eol-style native

If you add a folder, it will add all the files included in the folder, except for files in the ignored list.

Delete a file

You can delete files or folders from the working copy, to be deleted in the next commit or marked as such in the next diff, using the command (which will automatically delete the files from the working copy, but won't delete folders in such way):

% svn delete

Make sure the file or folder do not have local modifications, else they won't be deleted unless you force the deletion.

Move a file

You no longer create new files from scratch when moving files!

% svn mv file1 file2

You can also do it with entire folders.

Reverting your changes

If your changes in the working copy are not useful in your opinion, you can revert them using the following command:

% svn revert

You must use parameters for this command. To revert all your changes in the working copy, use:

% svn revert -R .

To revert the changes in a specific file, use:

% svn revert

Reverting can also remove added files (they won't be deleted, just removed and considered "unknown files", just like you didn't use svn add at first), and restore deleted files (both deleted by hand and deleted by svn delete).

Checking the status of the working copy

You can check the status of your working copy using the following command:

% svn status

These are several important letters in the first column of the item, which show the status:

  • M = the item was modified by you
  • A = the item was added by you (using svn add)
  • D = the item was deleted by you (using svn delete)
  •  ? = the item is not under the version control, but exist
  •  ! = the item is missing (under the version control, but not exist - probably deleted without using svn delete) or incomplete

Checking out specific revision number

You can check specific repository revision using following command :

% svn checkout -r 12345 svn:// vlc-trunk

Developer use

If you have a write access for the server, you can use an SSH access instead of HTTP access. This might change later.


Commits, or check ins, are the action of applying your changes from the working copy to the web repository. Use the following command to do that:

% svn commit

Using the command without the parameters will fail, unless you've configured an editor, because you have to enter a comment for the file logs. You can use one of the following forms:

% svn commit --message="This is the log comment."
% svn commit --file=file_with_log_comment

Other commands

% svn export
% svn propedit

Are documented in the SVN Book that you should definitively read.

External links