Unix 103: SVN commands, mostly done
authorKyle Spaans <kspaans@student.math.uwaterloo.ca>
Wed, 15 Jul 2009 00:17:51 +0000 (20:17 -0400)
committerKyle Spaans <kspaans@student.math.uwaterloo.ca>
Wed, 15 Jul 2009 00:17:51 +0000 (20:17 -0400)
code-management.pod

index 92e161a..58f38f2 100644 (file)
@@ -131,7 +131,44 @@ Goto 4.
 
 =head3 Subversion
 
-Someone will have to help me out here.
+=over
+
+=item 1.
+
+C<svnadmin create svn_repo> to create a subversion repository in F<svn_repo>.
+
+=item 2.
+
+C<svn import F<project_dir> -m "Initial commit"> to tell Subversion to add the
+contents of F<project_dir> to the repository. In this directory should be the
+initial files or original copy of whatever you want to start tracking under
+version control. The C<-m> flag lets you specify the commit message.
+
+=item 3.
+
+C<svn checkout /path/to/svn_repo> should be done in some other directory. This
+will checkout a working copy of the contents of the repository into a directory
+in the present working directory called F<svn_repo>.
+
+=item 4.
+
+Edit your files. Use C<svn add F<file>> if you need to add I<new> files to the
+repository.
+
+=item 5.
+
+C<svn commit> and remember to leave a meaningful commit message.
+
+=item 6.
+
+C<svn update> to resynchronize with the repository and C<svn log> to see the
+history of what you've done.
+
+=item 7.
+
+Goto 4.
+
+=back
 
 This is really all that you need if you are working alone and want a tool to
 keep track of metadata for you. This way when you wake up the next morning, you
@@ -167,6 +204,16 @@ Git's nickname for the latest commit in the current branch.
 
 =back
 
+=head3 Subversion Definitions
+
+=over
+
+=item Working Copy
+
+Similar to Git's working directory, except this is the copy of the repository
+that you have checked out. You will do all of your work, and issue all C<svn>
+commands in the directory where your working copy is.
+
 =head3 Get oriented with C<git status>
 
 To find out which files have been changed, which ones have been added, and
@@ -174,6 +221,11 @@ which branch you are on, use the C<git status> command. It's important to note
 that only changes that are explicitly added will be included in a commit.
 C<git status> will show this.
 
+=head3 Get oriented with C<svn status>
+
+It will tell you which files have been changed. These changes, if any, will be
+commited to the repository when you C<svn commit>.
+
 =head3 Compare two files with C<git diff>
 
 Typing C<git diff> at any time will print the difference between the latest
@@ -182,6 +234,11 @@ added to the index, it will show the differences between the working directory
 and the index. To see the differences between the I<index> and the latest
 commit, type C<git diff --cached>.
 
+=head3 Compare two files with C<svn diff>
+
+To compare the contents of working copy with the latest version in the
+repository. See the changes made to only a single file with C<svn diff F<file>>.
+
 =head3 Checking out old versions of files with C<git checkout>
 
 The C<git checkout> command is used for checking out different versions of
@@ -192,6 +249,12 @@ using the contents from I<version>, which can be a commit.
 
 E.G. C<git checkout HEAD^ hello.c>
 
+=head3 Checking out old versions of files with C<svn revert>
+
+The C<svn revert -r num F<file>> command is used for checking out different versions of
+You can also fix mistakes by reverting to older versions of a file, ignoring any
+changes made to your working copy.
+
 =head3 Fixing Mistakes with C<git reset> and C<git revert>
 
 Have you completely destroyed your working directory? Get it all back with
@@ -210,7 +273,7 @@ C<git revert some-commit> will do this.
 Did you forget something or mistype your commit message? Use
 C<git commit --amend> to modify the most recent commit.
 
-=head4 Warning: Modifying your History
+=head4 Warning: Modifying your History in Git
 
 Using C<git reset> and C<git commit --amend> will modify your history. If
 someone else has seen the state of your repository between when you made a
@@ -221,13 +284,17 @@ Git will get very confused.
 
 Some less common or more tool-specific commands.
 
-=head3 More advanced output from git log.
+=head3 More advanced output from C<git log>
 
 You can see more than just author information and commit messages from
 C<git log>. The C<--stat> option will give what is called a diffstat, showing
 you which files have been changed. The C<-p> option, for patch, will output a
 patch representing each commit.
 
+=head3 More output from C<svn log>
+
+You may find C<svn log -v> more useful.
+
 =head3 Branches
 
 Branching is as easy as C<git branch some-branch>. Use C<git checkout> to
@@ -315,3 +382,4 @@ thinks the command line and command line-based tools are important for every
 
 Find out exactly which undergrad machines have git installed. Make sure that
 svn works as expected on those same machines (or all machines).
+Paradigm differences between git and svn.