www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - SvnParallelUpdata: an D version of Scala SvnFastUpdate


SvnParallelUpdate[1] was started as my attempt to make port of Scala[2]  
example SubversionFastUpdate[3] to D. But during development I have made  
too many changes in the original algorithm so now it is a completely  
different solution :) The main differences are:

* Scala version checks revisions of working copy and repository. And does  
nothing if revisions are the same. My version always launches 'svn up' --  
this allows to restore deleted paths and files.
* Scala version uses only one type of working thread -- thread which  
performs 'svn up'. My version uses two types: the first for 'svn up' and  
the second for 'svn co' (for checking out missing paths).
* Scala version can't handle working copies which use file:/// URLs.
* Scala version uses XML-format output from svn.
* Scala version uses some strange and complex algorithm for detecting  
updateable entities from repository log. My version uses much simplier  
approach -- 'svn ls' for getting list of top-level subdirectories.

I've tested SvnParallelUpdate only on Windows with DMD v.1.013 and Tango  
0.97-RC1. To build:

rebuild svnparup.d

To run:

For updating current working copy:
For updating working copy in directory d:/home/my/project:
 svnparup d:/home/my/project
This is my first more or less serious program in D and Tango. So if someone finds some inefficient or/and bad fragment please tell me about it (may be I should have post this in digitalmars.D.learn n.g?). Thanks to Walter Bright for great programming language! Thanks to Tango team for great library -- I found all what I need in Tango! [1] http://eao197.narod.ru/svnparup/svnparup.d (and colored version in form of HTML: http://eao197.narod.ru/svnparup/svnparup.d.html) [2] http://www.scala-lang.org [3] http://scala.sygneca.com/code/subversion-fast-update -- Regards, Yauheni Akhotnikau
Apr 20 2007