(And of course, it would be nice, if my new employer would use Git, however, Subversion and Git can co-exist as you may know already. But this is not the subject of this blog entry.)
So, how to import an existing project to Subversion? I don't mind loosing the history of the project, of course this makes the whole migration process a lot easier.
1. Create a Subversion repository
First, a central Subversion repository has to be created if it does not exist already:$ svnadmin create /svn/repos
2. Import an existing project to the trunk
So, let's import the project directorymyproject
to Subversion. I already learned that the recommended structure should be as follows:myproject/ trunk/ tags/ branches/As in a non-Subversion project, the
trunk
, tags
and branches
directories usually do not exist yet, they have to be created first. The import sequence for the project directory myproject becomes as follows:$ cd <parent directory of the project directory myproject> $ mkdir myproject_svn myproject_svn/tags myproject_svn/branches $ mv myproject myproject_svn/trunk $ svn import myproject_svn file:///svn/repos/myprojectAs the Subversion repository is locally visible, I use the
file://
schema.Don't forget the
myproject
in the last command or all files in svn_myproject
will be imported directly into the root directory of the repository.You cannot work directly with the created
myproject_svn
directory above, you first have to checkout it again:svn checkout file:///svn/repos/myproject/trunk -d myproject
3. Create a branch
Creating a branch is just a Subversion copy:$ cd myproject $ svn copy trunk/ branches/myproject-branch $ svn status A + branches/myproject-branchHere, the
trunk/
directory is copied recursively in the working directory brances/myproject-branch
. The output of the command svn status
indicates that the directory is ready to be added to the repository. The +
says that branches/myproject-branch
is just a copy and nothing new.When commiting, Subversion creates the directory in the repository:
$ svn commit -m"creating new branch" Adding branches/myproject-branch Committed revision 987.Subversion does not really copy all files, but just creates a new repository entry pointing to the original tree, so this is also called a "cheap copy". Please refer to the Subversion documentation for more detailed infos.
The one step method without the need of a temporary directory is as follows:
$ svn copy file:///svn/repos/myproject-trunk \ file:///svn/repos/myproject/branches/myproject-branch \ -m"creating new branch"
No comments:
Post a Comment