In order to avoid a certain bug, or for any reason, you might want to get
the tovid from latest svn subversion. Believe me, it is as simple as ABC:
-
decide where you want store you subversion files.
-
mkdir/cd into it.
-
issue the svn command to check it out.
$ cd /export/repositories/svnwork
$ svn co https://tovid.svn.sourceforge.net/svnroot/tovid tovid
A tovid/trunk
A tovid/trunk/tovid
A tovid/trunk/tovid/AUTHORS
A tovid/trunk/tovid/ChangeLog
[...]
A tovid/branches/tovid-pycairo/py-compile
Checked out revision 1507.
That's it. You've get the latest tovid from svn subversion!
I'm running Debian Testing, the only package I need to install for above is
subversion Advanced version control system
That's seems to be the most hassle free solution to me, but if you still
prefer GUI version, I believe there are lots of solutions also. Here is a
few from my Debian list:
esvn - frontend for the Subversion revision system written in Qt
gforge-plugin-scmsvn - subversion plugin for GForge
kdesvn - subversion client with tight KDE integration
python-svn - A(nother) Python interface to Subversion
rapidsvn - A GUI client for subversion
websvn - interface for subversion repositories written in PHP
also lists a few subversion GUI tools, as well as explaining the basics of
subversion.
documented on: 2006-12-19
Subversion is able to cache passwords
Note that subversion is able to cache passwords:
$ svn commit --username=suntong001 --message "Enable using ttf font file as -font" trunk/tovid/src/makemenu
Password for 'suntong001':
Sending trunk/tovid/src/makemenu
$ svn commit --username=suntong001 --message "Make menu selection looks more comfortable when -align right" trunk/tovid/src/makemenu
Sending trunk/tovid/src/makemenu
I.e., no password asked any more.
documented on: 2006-12-19
Subversion password management
Many servers are configured to require authentication on every request. This
would be a big annoyance to users, if they were forced to type their
passwords over and over again. Fortunately, the Subversion client has a
remedy for this — a built-in system for caching authentication credentials
on disk. By default, whenever the command-line client successfully responds
to a server's authentication challenge, it saves the credentials in the
user's private runtime configuration area (~/.subversion/auth/ on Unix-like
systems or %APPDATA%/Subversion/auth/ on Windows; see the section called
"Runtime Configuration Area" for more details about the runtime
configuration system). Successful credentials are cached on disk, keyed on a
combination of the server's hostname, port, and authentication realm.
When the client receives an authentication challenge, it first looks for the
appropriate credentials in the user's disk cache. If seemingly suitable
credentials are not present, or if the cached credentials ultimately fail to
authenticate, then the client will, by default, fall back to prompting the
user for the necessary information.
documented on: 2008-03-22
Getting the most out of Subversion means doing those oft-repeated tasks with
ease. Here, we shall quickly cover the basic commands and related switches
that are most needed for novice users to get started with SVN.
Where Is My Working Copy?
To update the newly created repository, can be updated further, a local WC
(an exact replica of the repository in its current form) should first be
created. The command to create a local copy of the repo and its output is
shown below.
|
The last argument (testrepo_copy) to svn co is optional; if no
argument is given, then the name of the repository is given to the directory
that will hold the working copy. It is in the WC directory that the
repository contents will be dumped: |
sh-3.1$ /opt/svn-1.4.3/bin/svn co \
file:///lnx_data/repos_holder/testrepo/trunk testrepo_wcopy
A testrepo_wcopy/bar.pm
A testrepo_wcopy/Makefile
A testrepo_wcopy/foo.pl
Checked out revision 1.
Adding New Files to the Repository
Previously, I showed how to populate an empty repository using svn
import. Subversion assumes that, prior to import, the directory hierarchy is
well organized in terms of "branches, trunks, and tags" directories. So, how
do we add new files or directories after the repository is created? For this
situation, the command svn add is very helpful.
Create the new files and directories in the working copy directory and then
execute svn add followed by svn commit:
sh-3.1$ /opt/svn-1.4.3/bin/svn add README
A README
sh-3.1$ /opt/svn-1.4.3/bin/svn commit . -m "new file to the repo" Adding README Transmitting file data . Committed revision 2.
This command comes in handy when the initial data to be imported is quite
large, and doing the same via svn add would prove to be roundabout way to
achieve the same objective.
How to Propagate Changes to the Repository
With the svn add command, new files/dirs are added to the WC only but not to
the repo yet. This task is accomplished with the command svn commit. New
files are committed in the repo, and, upon successful commit, a revision
number is shown. This number indicates how many revisions the repository has
undergone including the current commit.
How to Create Baselines
At significant milestones, the repository can be archived using tags (or
"identifiers"). In Subversion, tags are nothing but folders that are created
with names provided by the user; tags are created using the command "svn
copy".
In the course of writing this article, I wanted to record the progress (at
random intervals) of the manuscript; hence, I labeled the changes to it
using the svn copy command as shown below (here "svnarticle_draft" is the
working copy and "/opt/samagdocs" is the repo location):
sh-3.1$ pwd
/home/ram/svnarticle_draft
sh-3.1$ /opt/svn-1.4.3/bin/svn copy -m "sample tag" . \ file:///opt/samagdocs/tags/MANU_01REVIEW_27FEB
Committed revision 37.
Subversion creates an exact replica of contents from the WC to the mentioned
folder "MANU_01REVIEW_27FEB" under the "tags" directory of the repo
"/opt/samagdocs". To confirm what constitutes this folder, we use the
command, svnlook tree, like this:
svnlook tree /filesystem/path/to/repos | grep -A NUM-LINES \
"tag-folder-name"
This command, svnlook, does not accept a URL to the repo, but the file
system path to the repo and the trimmed output of this command is shown
below:
sh-3.1$ /opt/svn-1.4.3/bin/svnlook tree /opt/samagdocs/ | grep -A \
05 "MANU_01REVIEW_27FEB"
MANU_01REVIEW_27FEB/
images/
svn_move.png
svnignore_cmd.png
orig_populate_repo.png
svnserve_multiplerepos.png
svnserve_configuration.png
How to Work in Isolation
Subversion, like other version control tools, facilitates working in
isolation via branches. Similar to tags, branches can also be created using
the command svn copy. Branch creation can be done in two ways, but I will
show the simpler and easier method here, which involves complete server-side
action without involving the local WC.
The following is the output of svn copy used to create the test branch and
then followed by svn look to highlight that the branch creation process is
done successfully:
sh-3.1$ /opt/svn-1.4.3/bin/svn copy \
file:///lnx_data/repos_holder/testrepo/trunk \
file:///lnx_data/repos_holder/testrepo/branches/test_branch \
-m "simulating branch creation"
Committed revision 4.
sh-3.1$ /opt/svn-1.4.3/bin/svnlook tree \ /lnx_data/repos_holder/testrepo/ | grep -A 05 test test_branch/ bar.pm Makefile README foo.pl
Now that a new branch (copy of the latest from the trunk) has been created,
you can check out from this namespace, then work from the checked out copy
and merge with the trunk as needed.
Branch creation does not grow the repository size; only the changed files
are maintained under the newly created "branch-dir", and the rest of the
files (untouched/not modified) are referred from the existing tree. This is
often referred to as Cheap Copies.
Conclusion
That's it for now. In the second part of this article, I look at additional
subcommands (e.g., svn propedit, svn merge, and others). Access to
Subversion repositories via svnserve and http schemes as well as the
availability of various third-party tools for Subversion will also be
addressed in the second part.
Acknowledgments
Thanks to the core Subversion team for providing a superb version control
tool and the thriving dev and users mailing lists of Subversion, which
continue to be a source of gyan (wisdom) for many, including me, because of
the immense contribution from the active participants.
Copyright (c) 2007 CMP Technology