Here is the document I had prepared. It is about VSS to SVN migration but you'll find important info on command mappings between VSS, CVS and SVN and also some pros and cons on using SVN...
Although there are many alternatives for an RCS, the three most popular are:
Subversion is an OpenSource tool that was built based on the CVS architecture but with the plan to fix some of the problems related to the general architecture of CVS.
Because of the earlier mentioned pros and cons of alternative solutions, Subversion was chosen as the tool to replace VSS.
This section will detail how to migrate from VSS to SVN: what developers should know and what “project creators” or Subversion administrators should also know.
There are some migration scripts that can be found to migrate a VSS repository to a SVN repository. This script (reference document [3]) is an unofficial script developed by a user who needed it done in his own projects. The advantage of using such a script would be to preserve the history of files and folders. On the other hand it is not guaranteed that the script will fill our needs and there might be need to customize the scripts. This can be time consuming and the effort may not be worthwhile. My suggestion is to recreate the repositories in Subversion and to keep the VSS repositories and clients active for a determined period of time so that the history can still be consulted during the transition (only in read only). Once this period is over, we can archive the VSS repositories and move on to only Subversion.
Contrarily to CVS and VSS, SVN needs a certain knowledge of the repository when creating a project. In CVS you would directly create a module and the repository would automatically create a head branch and manage your branches and tags automatically. In SVN it is not the case, the tags and branches are considered to be simple “copies” of the main development line (called “trunk” in Subversion). Therefore, it is important when creating a new module to use this directory tree convention to store the project:
The files are stored under trunk (main line of development). When creating a tag, it is important to specify the tags directory and to append the name of the revision: http://<url_for_repository>/<project_name>/tags/<tag_name> The same concept applies for branches. The difference between branches and tags is that tags are lightweight copies (only the differences are copied) whereas the branches are total copies of the “trunk” or selected tag or branch. Here is an example of the VMIS-Client tree structure:
If we want to create a tag v1.0, we will create it in the following directory: http://<url_for_repository>/vmis-client/tags/v1.0
The resulting repository, will look like so:
It is not so complicated but it takes getting used to and asks for a little more discipline (or knowledge) of the repository to developers and especially those who will have to create the project since they will have to create the “base directory tree” for every project they check in.
There is a world of difference between VSS and SVN commands but not much difference between the CVS and SVN commands. If the developer is confortable with CVS, there will not be much to learn but coming from VSS it is a little more complicated
The major difference between the 2 is the commit. In CVS and SVN, you can add files, delete files, and modify files without every modifying the repository. Only when the commit is made are the changes sent to the repository. This is a HUGE advantage since you can make sure that the repository is always in a clean state. There are other commands and differences but this should give a quick overview and help as a reference for developers to migrate from one platform to the other.
As explained in section 7.1.2, the main development line (also known as HEAD or trunk) is stored in the “trunk” directory. Therefore when trying to connect a client to the project, it is important to connect to the trunk directory and not the “root” of the project directory. Otherwise every time a tag or a branch is committed, you will be synchronized with this on your local client and this can become very heavy (disk wise). You can always switch to a tag version if you need to modify a specific tag but usually you will create a branch from a tag and modify the branch directly.
François Eric wrote: Hi, ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ Mdarad-toolbox-devs mailing list Mdarad-toolbox-devs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mdarad-toolbox-devs |
- [Mdarad-toolbox-devs] IMPORTANT: Merging to SVN François Eric
- Re: [Mdarad-toolbox-devs] IMPORTANT: Merging to SVN François Eric
- [Mdarad-toolbox-devs] Re: IMPORTANT: Merging to SVN François Eric