Re: request for input: possible move to SVN

Jacob Smullyan <[email protected]>
Newsgroups gmane.comp.web.skunkweb
Message-ID <[email protected]>
Thank you very much for such a detailed account of your experience!

My current svn repositories don't get wedged any longer because I
access them exclusively via mod_svn, no local access (including no
ViewCVS).  I want to test the "fsfs" backend of svn 1.1, which has no
berkeley db backend to get wedged.

Performance-wise, subversion may not be as fast as some commercial
products, but it beats the pants off of CVS.

BTW, I'm heartened by the <!-- cache expires at blah --> comments in
the source of arenaunlimited.com!

js

On Thu, Oct 28, 2004 at 06:40:47PM -0700, Matthew Bogosian wrote:
> On Oct 27, 2004, at 20:56, Jacob Smullyan:
> 
> >I have been using subversion for my own projects lately, and much
> >prefer it to CVS.  In particular, the ease with which files can be
> >moved and branches maintained, as well as the noticeable performance
> >improvements, make it to my mind a clear win.
> >
> >...
> >
> >What do you think?
> 
> I am not a developer on the SkunkWeb project, but I have to concur with  
> Jacob's assessment of Subversion. We've used it for two major projects  
> and found it to be an acceptable alternative to many revision control  
> systems (and vastly superior to CVS).
> 
> For us, there were two areas of major concern when switching from our  
> expensive commercial solution (which will remain unnamed). The first  
> was performance in a medium-sized project (eight developers). The  
> second was data integrity. Being that Subversion was relatively new  
> (and Berkeley DBs -- the underlying data storage mechanism for  
> Subversion repositories -- are relatively fragile), we were tentative  
> to try it for a new project.
> 
> It turns out our fears were somewhat justified. We chose to access our  
> subversion repositories via mod_svn and Apache 2.0. Although the  
> web-browsing aspect was kind of sexy, performance seemed much slower  
> compared to what we were used to with our other revision control  
> system. Second, the repository frequently became "wedged" and we needed  
> to halt Apache and issue "svnadmin recover" commands to recover (so  
> much so that we made a cron job to do this every 8-12 hours).
> 
> However, rather than abandoning Subversion altogether, we decided to  
> play around with the configuration to see if we could make it an  
> acceptable alternative. The first thing we did was to get rid of Apache  
> 2.0 and mod_svn. Instead we chose to access our repositories via  
> svn+ssh://.... Although this required careful planning of  
> groups/permissions and also necessitated that each developer had a  
> login on the repository machine*, such requirements were not  
> prohibitive in our case. Immediately, we noticed a speedup in checkouts  
> and commits. We also noticed that repository hardly ever got in the  
> "wedged" state we experienced so frequently with mod_svn. For those who  
> wanted continued web access, we used ViewCVS  
> (<http://viewcvs.sourceforge.net/>) which added support for Subversion  
> a while ago and is actually much nicer than the mod_svn web interface.
> 
> In anticipation of the handful of times the repository did become  
> corrupt, we modified the hot-backup.py script that accompanies many  
> Subversion installations and installed it as a post-commit hook** (see  
> <http://svnbook.red-bean.com/svnbook-1.0/ch05s03.html#svn-ch-5-sect 
> -3.6>). We also had a nightly script that did incremental dumps from  
> the repository in the event that we needed to upgrade Subversion and  
> reload (that way we wouldn't have to dump the entire thing and could do  
> a quick upgrade by dumping only those new revisions not covered by the  
> previous night's backup).
> 
> I've attached our svnbackup script*** for reference. We called it in a  
> cron job as follows (this is only for reference, check your version of  
> cron to see if/how it supports commands which span multiple lines):
> 
>     30 23 * * 0     "${HOME}/bin/svnbackup" -d -j -r 0  
> "${HOME}/svnroot" \
>         "${HOME}/svnbackup"
>     30 23 * * 1-6   "${HOME}/bin/svnbackup" -j -l "$(date +\%w)" -r 0 \
>         "${HOME}/svnroot" "${HOME}/svnbackup"
> 
> This used the attached script to create weekly complete backups with  
> daily incrementals.
> 
> If anyone has any questions regarding our experience with Subversion,  
> please feel free to ask. I'd be more than happy to share additional  
> details as requested. I hope this helps!
> 
> Matthew Bogosian
> President/COO, Arena Unlimited, Inc.
> http://arenaunlimited.com/
> 
> Notes:
> 
> * Alternatively, one could create one single user on the repository  
> machine for each repository and allow users to log in as that user  
> (e.g., via ~reposuser/.ssh/authorized_keys). That way, instead of each  
> developer using their own logins for svn commands, everyone uses the  
> same user:
> 
>     svn co svn+ssh://reposuser@svnhost/path/to/repos
> 
> You have to trust your developers not to log in as that user and do  
> stupid things (like delete the repository), but for most teams with  
> which I've been involved, this has never been an issue. If you suffer  
> from OCD (as most good admins do), you can have the repository user's  
> home directory and the repository itself owned by "nobody" or something  
> (so that it's read-only), and only give write access to the  
> repository's db directory to that user's group. Your mileage may very,  
> but I encourage you to experiment. This still allows users to delete  
> the repository, but narrows the field of potential destruction.
> 
> Another alternative (if you have root access to the repository machine  
> or are allowed to run daemons) is to run svnserve in either inetd or  
> daemon mode. For SSL, one can either use the SSL-patched version of  
> svnserve, or one wrap it in an SSL connection with stunnel or ssh. See  
> the svnserve man page or  
> <http://contactor.se/~dast/svnusers/archive-2004-10/0119.shtml> for  
> details.
> 
> ** Warning: hot-backup.py is pretty CPU and disk intensive for larger  
> repositories. The speed of Subversion operations tend to suffer  
> immediately following a commit as a result. They don't fail, they just  
> take a little longer to execute. For example, for those of use who  
> liked to do "svn commit ... && svn update ...", our update took a  
> little longer because the repository machine was still busy doing the  
> hot backup. Another (or faster) CPU, a faster disk (or RAID), more RAM,  
> etc. in the repository machine may make this negligible.
> 
> *** This script requires a posix-compatible environment with Bash  
> version >= 2 installed as /bin/sh (it needs the getopt shell built-in).  
> If you have bash2 installed elsewhere modify the first line to point to  
> that installation. If you run it without any arguments, it will give  
> man-page like instructions on its usage.
> 



-- 
Jacob Smullyan
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBgbwyuqamFyFXXLIRApVjAKDFZ8AOFrQmgZOzT44uMn0tWG3+LwCdFSs9
vH4cOwOO8+bs5THwaSfIkUg=
=7gpA
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.