Subversion
Contents
Basic Linux Subversion Usage (Terminal)
Install subversion
In order to use subversion repositories, you should install it before. In linux debian/ubuntu OS:
sudo apt-get install subversion
Download a repository
svn co svn+ssh://<USER>@<SERVER>/<COMPLETE_PATH>
Basic Commands
Update repository | : | svn up |
Add a File | : | svn add <FILENAME> |
Upload modifications | : | svn ci (equivalent to svn commit) |
: | svn commit | |
Upload modifications with comments | : | svn ci -m "<YOUR_COMMENT>" |
: | svn commit -m "<YOUR_COMMENT>" | |
Check status | : | svn st |
Check logs | : | svn logs |
Status information
The execution of svn st shows information about the local status of the repository’s files. This information is shown through a tag before file's name. The main tags:
M | : | The file has been modified and it will replace the old version in the next commit. |
? | : | The file is new and it is not in the version control. |
A | : | The file was new and it will be added in the next commit. |
More information at http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.status.html
Typical usage
Upgrade new changes
When you are working on a folder under the version control, you usually modify or add files. You can know the status of your folder with:
svn st
This command shows a list of new and modified files (between other possibilities). For example, you can obtain the following information:
? file_1 M file_2
This implies that file_1 is a new file which is not in the version control and file_2 is a preexisting file which has been modified. If you want to store file_1 on the repository, you should execute the following command:
svn add file_1
With this command, you mark file_1 in your local version as a file which you want to add to the version control. Recalls that file_1 is NOT already on the repository server, it is still only in your local computer. If you execute now svn st, you will see the new status:
A file_1 M file_2
file_1 is marked as an added file. The next step is to upgrade the repository with the new version of the files. Execute the following command:
svn ci -m "<YOUR_COMMENT>"
You should include a message (<YOUR_COMMENT>), it will be logged to know the changes made. The repository is now upgraded and the current version has been incremented. The changes can be updated in other instances of the repository.
Basic Windows Subversion Usage
Download and check:
http://tortoisesvn.net/
Subversion Manager
Relocate server
svn sw --relocate svn+ssh://<USER>@<OLD_SERVER>/<COMPLETE_PATH> svn+ssh://<USER>@<NEW_SERVER>/<COMPLE_PATH>
Dump
To create a file with all the repo
svnadmin dump <SVN_REPO_NAME> > <SVN_DUMPFILE_NAME>
Load
To create a repo from a dump file
svnadmin create <SVN_REPO_NAME> svnadmin load --ignore-uuid <SVN_DUMPFILE_NAME> < <SVN_REPO_NAME>
Filter
To create a repo file with a specific directory within the dump file
svndumpfilter include <PATH_TO_DESIRED_DIR> --drop-empty-revs --renumber-revs --preserve-revprops < <SVN_DUMPFILE_NAME> > <SVN_DESIRED_DIR_DUMPFILE_NAME>
However, the <SVN_DESIRED_DIR_DUMPFILE_NAME> keeps the directory structure of the old repo. If you want to delete it:
1) Edit <SVN_DESIRED_DIR_DUMPFILE_NAME>
2) Remove the top directory (e.g.):
Node-path: 2007-2008 Node-action: add Node-kind: dir Prop-content-length: 10 Content-length: 10 PROPS-END
3) Remove all the references to the top directory (e.g.)
sed -i 's/Node-path: 2005-2006/Node-path: /g' asignaturas_2005-2006_dump sed -i 's/Node-copyfrom-path: 2005-2006/Node-copyfrom-path: /g' asignaturas_2005-2006_dump