Difference between revisions of "Subversion"

From Organic Design wiki
(Commit)
(more)
Line 11: Line 11:
  
 
=Usage=
 
=Usage=
To create a new repository on the server and import a directory of files;  
+
The most important command to know is how to get help;
 +
svn help
 +
svn help checkout # Help on check(ing)out project to CLIENT copy
 +
svn help commmit  # Help on commit(ting) changes to SERVER
 +
 
 +
To create a new repository on the server ready for importing a directory of files;  
 
  cd /tmp
 
  cd /tmp
 
  mkdir SERVER
 
  mkdir SERVER
 
  svnadmin create /tmp/SERVER/newrepos
 
  svnadmin create /tmp/SERVER/newrepos
  
Create example file for upload
+
This creates a concise directory for the new repository on the SERVER;
 +
<pre>
 +
ls -l /tmp/SERVER/newrepos
 +
total 16
 +
-rw-r--r--    1 User  wheel  379 Apr  3 13:58 README.txt
 +
drwxr-xr-x    4 User  wheel  136 Apr  3 13:58 conf
 +
drwxr-xr-x    2 User  wheel  68 Apr  3 13:58 dav
 +
drwxr-xr-x  10 User  wheel  340 Apr  3 13:58 db
 +
-r--r--r--    1 User  wheel    2 Apr  3 13:58 format
 +
drwxr-xr-x  11 User  wheel  374 Apr  3 13:58 hooks
 +
drwxr-xr-x    4 User  wheel  136 Apr  3 13:58 locks
 +
</pre>
 +
Create an example directory for upload;
 
  cd /tmp
 
  cd /tmp
 
  mkdir MYTREE
 
  mkdir MYTREE
Line 27: Line 44:
 
To make a local copy you need to use the checkout command. This creates a new directory (default called newrepos) which is a local copy of newrepos.
 
To make a local copy you need to use the checkout command. This creates a new directory (default called newrepos) which is a local copy of newrepos.
  
  mkdir LOCAL
+
  mkdir CLIENT
  cd LOCAL
+
  cd CLIENT
 
  svn co file:///tmp/SERVER/newrepos/some/project/  # fetches project/test.pl
 
  svn co file:///tmp/SERVER/newrepos/some/project/  # fetches project/test.pl
 
  svn co file:///tmp/SERVER/newrepos/some/          # fetches some/project/test.pl
 
  svn co file:///tmp/SERVER/newrepos/some/          # fetches some/project/test.pl
  rm -rf /tmp/LOCAL  
+
  rm -rf /tmp/CLIENT  
  svn co file:///tmp/SERVER/newrepos/some/project/ /tmp/LOCAL # Creates LOCAL dir
+
  svn co file:///tmp/SERVER/newrepos/some/project/ /tmp/CLIENT # Creates CLIENT dir
  
Note: The directory the svn command is run in determines where the local checkout directories and files will end up.
+
''Note: The directory the svn command is run in determines where the local checkout directories and files will end up.''
  
Now that you have created a local copy all work should be conducted within it. There is a hidden directory called ''.svn'' which contains all the information required for the svn framework.
+
Now that you have created a local copy all work should be conducted within it. There is a hidden directory called ''.svn'' which contains all the information required for the svn framework;
  
  cd /tmp/LOCAL # Work in the lcoal copy of svn
+
  cd /tmp/CLIENT # Work in the lcoal copy of svn
  
To update a file on your LOCAL directory
+
To update a file on your CLIENT directory;
  cd /tmp/LOCAL
+
  cd /tmp/CLIENT
 
  svn update # "." is updated  
 
  svn update # "." is updated  
 
  cd /tmp
 
  cd /tmp
  svn update /tmp/LOCAL # Sepecifying path
+
  svn update /tmp/CLIENT # Sepecifying path
 +
 
 +
To add a new file to the local svn copy, first make a new file within the directory structure;
 +
cd /tmp/CLIENT
 +
echo '#!/usr/bin/perl -w\nprint qq(hello world!);' > /tmp/CLIENT/helloWorld2.pl
 +
svn add helloWorld2.pl
  
Useful Checking command
+
The ''status'' command will identify differences between the CLIENT copy and the SERVER copy of the repoistory;
  svn status /tmp/LOCAL
+
  svn status /tmp/CLIENT
 +
The following list provides the details of ''svn status'' output;
 
<pre>
 
<pre>
 
  L    abc.c              # svn has a lock in its .svn directory for abc.c
 
  L    abc.c              # svn has a lock in its .svn directory for abc.c
Line 66: Line 89:
 
  </pre>
 
  </pre>
  
To add a new file to the local svn copy, first make a new file within the directory structure
+
To upload the CLIENT copy changes to the SERVER copy use the ''commit'' command;
cd /tmp/LOCAL
+
  svn commit /tmp/CLIENT
echo '#!/usr/bin/perl -w\nprint qq(hello world!);' > /tmp/LOCAL/helloWorld2.pl
 
svn add helloWorld2.pl
 
 
 
To upload the LOCAL copy changes to the SERVER copy use the ''commit'' command
 
  svn commit /tmp/LOCAL
 
 
    
 
    
 +
Cleaning up directories in ''/tmp'';
 +
rm -rf /tmp/SERVER /tmp/CLIENT /tmp/MYTREE
  
=Links=
+
=External Links=
 
*http://www.onlamp.com/pub/a/bsd/2005/08/11/FreeBSD_Basics.html?page=2
 
*http://www.onlamp.com/pub/a/bsd/2005/08/11/FreeBSD_Basics.html?page=2
 
*[http://www.chiark.greenend.org.uk/~sgtatham/svn.html Experiences With Subversion]
 
*[http://www.chiark.greenend.org.uk/~sgtatham/svn.html Experiences With Subversion]
 
*http://www.abbeyworkshop.com/howto/misc/svn01/
 
*http://www.abbeyworkshop.com/howto/misc/svn01/
 
*http://centerstageproject.com/wiki/index.php/SVN_Tutorial
 
*http://centerstageproject.com/wiki/index.php/SVN_Tutorial

Revision as of 02:12, 3 April 2007


Commands
svn co url

Checkout, creates dir of name url

svn ci -m comment

Checkin - applies to the svn-structure that cwd is in

Usage

The most important command to know is how to get help;

svn help
svn help checkout # Help on check(ing)out project to CLIENT copy
svn help commmit  # Help on commit(ting) changes to SERVER

To create a new repository on the server ready for importing a directory of files;

cd /tmp
mkdir SERVER
svnadmin create /tmp/SERVER/newrepos

This creates a concise directory for the new repository on the SERVER;

ls -l /tmp/SERVER/newrepos
total 16
-rw-r--r--    1 User  wheel  379 Apr  3 13:58 README.txt
drwxr-xr-x    4 User  wheel  136 Apr  3 13:58 conf
drwxr-xr-x    2 User  wheel   68 Apr  3 13:58 dav
drwxr-xr-x   10 User  wheel  340 Apr  3 13:58 db
-r--r--r--    1 User  wheel    2 Apr  3 13:58 format
drwxr-xr-x   11 User  wheel  374 Apr  3 13:58 hooks
drwxr-xr-x    4 User  wheel  136 Apr  3 13:58 locks

Create an example directory for upload;

cd /tmp
mkdir MYTREE
echo '#!/usr/bin/perl -w\nprint "hello world";' > /tmp/MYTREE/helloWorld.pl
svn import /tmp/MYTREE file:///tmp/SERVER/newrepos/some/project

Listing the contents in the repository;

svn list file:///tmp/SERVER/newrepos/some/project

To make a local copy you need to use the checkout command. This creates a new directory (default called newrepos) which is a local copy of newrepos.

mkdir CLIENT
cd CLIENT
svn co file:///tmp/SERVER/newrepos/some/project/  # fetches project/test.pl
svn co file:///tmp/SERVER/newrepos/some/          # fetches some/project/test.pl
rm -rf /tmp/CLIENT  
svn co file:///tmp/SERVER/newrepos/some/project/ /tmp/CLIENT # Creates CLIENT dir

Note: The directory the svn command is run in determines where the local checkout directories and files will end up.

Now that you have created a local copy all work should be conducted within it. There is a hidden directory called .svn which contains all the information required for the svn framework;

cd /tmp/CLIENT # Work in the lcoal copy of svn

To update a file on your CLIENT directory;

cd /tmp/CLIENT
svn update # "." is updated 
cd /tmp
svn update /tmp/CLIENT # Sepecifying path

To add a new file to the local svn copy, first make a new file within the directory structure;

cd /tmp/CLIENT
echo '#!/usr/bin/perl -w\nprint qq(hello world!);' > /tmp/CLIENT/helloWorld2.pl
svn add helloWorld2.pl

The status command will identify differences between the CLIENT copy and the SERVER copy of the repoistory;

svn status /tmp/CLIENT

The following list provides the details of svn status output;

 L    abc.c               # svn has a lock in its .svn directory for abc.c
M      bar.c               # the content in bar.c has local modifications
 M     baz.c               # baz.c has property but no content modifications
X      3rd_party           # this dir is part of an externals definition
?      foo.o               # svn doesn't manage foo.o
!      some_dir            # svn manages this, but it's either missing or incomplete
~      qux                 # versioned as file/dir/link, but type has changed
I      .screenrc           # svn doesn't manage this, and is configured to ignore it
A  +   moved_dir           # added with history of where it came from
M  +   moved_dir/README    # added with history and has local modifications
D      stuff/fish.c        # this file is scheduled for deletion
A      stuff/loot/bloo.h   # this file is scheduled for addition
C      stuff/loot/lump.c   # this file has conflicts from an update
R      xyz.c               # this file is scheduled for replacement
    S  stuff/squawk        # this file or dir has been switched to a branch
 

To upload the CLIENT copy changes to the SERVER copy use the commit command;

svn commit /tmp/CLIENT
 

Cleaning up directories in /tmp;

rm -rf /tmp/SERVER /tmp/CLIENT /tmp/MYTREE

External Links