Subversion

From ReactOS Wiki
Revision as of 08:27, 12 June 2014 by Blue (talk | contribs) (Troubleshooting)
Jump to: navigation, search

Subversion is a version control system used by our ReactOS to manage the source code of the project.

Outdated: ReactOS source code was in a CVS repository up to December 30th 2004. Since January 1st 2005, the source code is in a Subversion (SVN) repository.

Up-to-date: As of May 2014, ReactOS is using Tigris SVN (now Apache SVN) version 1.6.17. ReactOS also uses ViewVC or web viewing, which is usually up to date.


Source Code Locations

To download the sources, you will need an SVN client. We have described the usage of some SVN clients below.

You may also view the sources in the repository online by visiting our FishEye with a browser, or browse through a daily updated cross-referenced doxygen database.

ReactOS

The Operating System itself with base components

svn://svn.reactos.org/reactos/trunk/reactos

http://svn.reactos.org/svn/reactos/trunk/reactos/

ReactOS Applications

Additional applications for ReactOS (bundled with releases)

svn://svn.reactos.org/reactos/trunk/rosapps

http://svn.reactos.org/svn/reactos/trunk/rosapps/

ReactOS Press Media

Graphical media used for representing the project

svn://svn.reactos.org/press-media/trunk

http://svn.reactos.org/svn/press-media/trunk/

ReactOS Project Tools

Additional tools used inside the ReactOS Project

svn://svn.reactos.org/project-tools/trunk

http://svn.reactos.org/svn/project-tools/trunk/

ReactOS Website

Website components of the ReactOS Project

svn://svn.reactos.org/web/trunk

http://svn.reactos.org/svn/web/trunk/

Other locations

Branches

These locations are just temporary and the code is usually merged back into the official source code after it has been improved.
svn://svn.reactos.org/reactos/branches/

SVN clients

For Windows, it is recommended to use the TortoiseSVN client, which nicely integrates into the Windows Explorer. There is also a subversion command-line interface bundled with the ReactOS Build Environment for Windows.

The usage of these clients is described in a separate article for each client:

Commits

Commits are data added to the ReactOS SVN. The term data is used because it has not been limited to code, but may include any other media including icons and sound. If a piece of code is committed then it means that its part of the ReactOS source code. Every commit has its own unique identification number and a message explaining its reason and purpose.

Messages

In an effort to lessen the load when changelogs need to be written for releases, this is the proposed commit message format. The general idea is that a script can be ran from one SVN revision to another and populate the changelog by putting all commits for one component into a single category. To do this, a commit needs to identify which component(s) it is for.

[Component Name]
-Description of change.

An example of this would be the following (commit by Johannes Anderwald, r44141):

[KERNEL32]
* Don't access freed memory in GetVolumeNameForVolumeMountPointW

Notifications

When commits are made, it makes notifications in several ways.

  • Mails with changes in each commit are sent to the mailing list ros-diffs. They will be plain text mails, which contain the differences in this revision.
  • The RosKGB IRC bot in #reactos notifies the room of the event
  • The ReactOS FishEye webinterface also shows the message of all the last commits.

Request commit (write) access

Prerequisites

There are a few mandatory prerequisites to getting a direct, full write access (aka "commit access") to the main repository:

  • Ability to communicate in written English.
  • Be ready to disclose a full real name to at least the project's official (e.g. development lead or project lead), and preferably disclose full real name for public access.
  • Have no legal restrictions related to contributing code to open source projects. Employees of Microsoft and subsidiaries are not allowed to work in the project.

Applying for write access

Once a individual has started submitting patches and adding new code to the project. Than the individual can be considered for application status. We do prefer not to give write access to someone who makes two or three updates and then never again contributes to the projects future. Also, note: If you are only going to submit patches now and than, you should file a bug report in our JIRA and attach the patch file for our developers to review and aid to the purposes of the project. If, however, you become a contributing developer on a continuing basis, you should definitely consider applying for the write access.

Who to ask

Join the ReactOS IRC channel on FreeNode #reactos and ask.

Read Connect to the ReactOS IRC Channels for more information.

Troubleshooting

SVN Update says: Object with the same name already exists

When you update your working copy, you may get a error message object with the same name already exists.

Subversion displays the error message because the directory is replaced in the repository and your working copy contains data which is unknown to Subversion (Your working copy is locally modified). Since Subversion does everything it can to not cause harm to your data, you must remove or move the data which is not in the repository out of the working copy.

This scenario won't happen very often though. You have two options to correctly resolve the problem:

  • Remove the affected directory and update your working copy again.
  • Remove all files and directories in the working copy that are unknown to Subversion and then update your working copy again.

Branching