Rob Gonda's Blog

SVN Client for Mac : Cast your vote

SCPlugin
Syncro SVN Client
SvnX
SmartSVN
RapidSVN
Eclipse + Subclipse / Subversive
Mac SVN
Cornerstone
ZigVersion
Versions

IIS + Apache, side by side happy together

IIS and Apache running side by side ... why? Well, for me, because I run SVN through Apache in a Windows box. I still like IIS for web sites, especially because I like to keep it similar to my production sites... however, I blogged before about getting multiple SVN repositories working with Apache. I usually switched Apache to listen to an alternate port because IIS binds itself to all port 80 on all IPs, regardless if they are actually being used or not. Good news! I found this Microsoft support document explaining how to unbind IIS from all IPs and include only the ones you want. I know, I actually never even looked for this before, but I have IIS serving my sites and Apache server SVN in the same server, both on port 80. Of course, you can also use this for hosting Trac (easier in Apache than IIS), or even just testing ... By the way, if you don't have the Windows Server CD handy, you can download the Support Tools here.
So, after installing the Support Tools, follow these instructions from the M$ site:

To add an IP address to the IP inclusion list
1.    Click Start, and then click Run.
2.    Type cmd, and then click OK to open a command prompt.
3.    Type the following, where xxx.xxx.x.x is the IP address you want to add:
httpcfg set iplisten -i xxx.xxx.x.x
When this succeeds, Httpcfg returns the following:
HttpSetServiceConfiguration completed with 0

To view additional status codes, see the Httpcfg help.
4.    After the IP address is added, use the following command to list it:
httpcfg query iplisten
Httpcfg returns the following:
IP :xxx.xxx.x.x
5.    From the command prompt, stop the HTTP service and its dependent services. To do this, type the following string at the command prompt:
net stop http /y
6.    From the command prompt, restart the HTTP service and it dependent services. To do this, type the following string at the command prompt:
net start w3svc
Note When you start w3svc, all services that were stopped when HTTP was stopped will start.

SVN: PROPFIND request failed - No Such Revision

One of my Subversion repositories got corrupted today and every single operation started failing, returning an error message: PROPFIND request failed on '/path/to/repo/ No Such Revision 296.

After researching for an hour I could not find anything, nada, nothing at all ... I found a few posts on dumping the data, creating a new repo, importing again ... but like I said, every operation on the repo failed... I couldn't even try those options.

So I chose to backup the repository's file system and fix it myself... I noticed that the error claimed that revision 296 did not exist and indeed, when I opened the db/revs folder it only went up to 295. With a completely wild guess, I opened the /current file and noticed that it had the 296 revision number on it, so I assumed this is the pointer to the latest revision, but the data never made it to the server... I modified the number to 295 and everything immediately started working.

Again, it was a wild guess, but it worked ... Hope this saves someone a few hours.

update: I think I found out how it broke. Someone committed a file that Nod32 caught with a virus; SVN increased the repo version, updated the indexes, and then the antivirus deleted the data...

tortoise svn 1.4.0 Final Released

Tortoise SVN 1.4.0 was released a couple of days ago to match the new changes in the Subversion 1.4.0 Server.

Many improvements and new features got added:

  • The action dialogs (commit, add, check for modifications, ...) have configurable columns, drag-n-drop support and new context menu commands.
  • The log dialog has a new column to show the issue number, formatting of log messages (*bold*, ^italic^ and _underlined) and finer control over the range of log messages to show.
  • Completely redesigned revision graph
  • Drag-n-drop in the repository browser
  • Option to disable the status cache
  • TortoiseMerge shows inline diffs, can handle UTF16 files, mark blocks which changed only in whitespace


upgraded to subversion 1.4.0

I just upgraded my SVN server from 1.3.2 to 1.4.0. In my previous post I mentioned it was available, but the Windows Installer version was not up there yet, only the source and binaries.

The install was easy, nothing out of the ordinary. Subversion asked me if I wanted it to update by apache modules and I clicked yes, however, when I went to the modules folder they were not updated. I had to manually copy mod_authz_svn.so and mod_dav_svn.so from C:\Program Files\Subversion\bin to C:\Program Files\Apache Group\Apache2\modules.

All my repo's, services, and modules work fine. If I see any new feature worth mentioning, I'll post back.

subversion 1.4 is out

Subversion 1.4 was released a few days ago... I haven't upgraded my servers yet, but I will post comments as soon as I do. Why should you upgrade?

  • svnsync, a new repository mirroring tool
  • Huge working-copy performance improvements
  • Support for BerkeleyDB 4.4 and its "auto recovery" feature
  • Size improvements to the binary delta algorithm
  • A handful of new command switches
  • Many improved APIs
  • More than 40 new bugfixes
Tortoise SVN is still on 1.4 RC1, so we should be seeing the final release soon. Subeclipse shows no signs of adding the new commands to the client.

SVNServe Vs Apache

SVN, short for Subversion, is a source control system similar to CSV, but IMHO better. Anyways, it is extremely simple to install the server, for Windows or Linux servers. SVN will take care of versioning, but if you need to serve it over IP you must use an additional tool, SVNServe and Apache being the two main (only?) choices.

If you have to choose one, here are a few points to take into consideration.

  • Both work with Windows and Linux
  • SVNServe for Windows allows to serve a single repository; SVNServe for Linux allows unlimited
  • Apache allows to serve unlimited repositories in both OS.
  • svn1clicks allows to fully install SVN + SVNServe in Windows
  • SVNServe runs on port 3690, Apache runs on port 80
  • Apache allows to run encrypted SVN over HTTPS -- port 443
  • Apache allows to authenticate against an htpassword file, ldap, or other methods. SVNServe uses a clear text passwd file.
  • SVNServe and Apache allow per repository authentication, including None, R, or RW. Apache allows per folder access restrictions too.
  • Apache requires to restart/reload configuration everytime a change is made. SVNServe picks it up automatically.
Those are the main points I can think of right now, there may be more, so please share your personal experience.

I have two setups at the moment, one running SVN+SVNServe for Linux, and the other is SVN+Apache in a Windows box. In fact, this box is running IIS6 and Apache with no conflicts, which you can accomplish by either having multiple IPs, or assigning a special port for Apache.

My client tools are TortoiseSVN and SubEclipse. I tried SVN Ant a couple of times, but I gave up... running SVN in the command line with Ant.

Subclipse 1.0.0 is out!

That's right ... I use Tortoise SVN for Windows, and Subeclipse for my eclipse development... Version 1.0.0 was released today and it cannot be installed through the automated update, you need to install it manually.

More information can be found @ the subeclipse _press_ release.

Multiple SVN repositories for Windows using Apache



1. Follow subversion for windows installation tutorial

2. Install Apache 2.0.55 by downloading and installing: http://www.apache.org/

3. After the installation finishes, run the following from a command prompt: "net stop apache2" (to stop the web server)

4. If you DON'T want/need SSL support, skip to step 9b below.

5. Rename httpd.conf in the apache config. directory (default is "c:\program files\apache group\apache2\conf") to httpd.conf.save

6. Browse to "http://smithii.com/ answer the questions and download and open the zip file (assuming you are allowed to do so).

7. Extract files from the zip you just opened to the base apache install directory (default is "c:\program files\apache group\apache2"). Be sure you preserve the folder names when extracting (i.e., don't just extract all the files to the same dir.)

8. Open ssl.conf in the apache configuration directory with notepad and change as follows:

a. Change "<IfDefine SSL>" to "#<IfDefine SSL>"

b. Change "</IfDefine>" to "#</IfDefine>" (last line of file)
This avoids the requirement of starting apache with the "-DSSL" parameter (which I couldn't get to work when running apache as a service).

9. Open httpd.conf in the apache configuration directory with notepad (default is "c:\program files\apache group\apache2\conf") and change the contents as follows:

a. Replace all "d:\test\apache2" with "c:\program files\apache group\apache2" (or whatever your base apache install directory is). Hint: Ctrl+H in notepad will allow you to do find/replace

b. Uncomment (remove "#") from "#LoadModule dav_module modules/mod_dav.so"

c. Add "LoadModule dav_svn_module modules/mod_dav_svn.so"

d. Add the following to the bottom of the file:
<Location /svn>
DAV svn
SVNPath "c:/documents and settings/svn_repos"
</Location>
Ensure you change the directory in SVNPath to be the actual location of your repository that you created when you installed subversion as part of Joe's tutorial. If you want more than one repository, you can create additional <Location> blocks. This example will allow you to browse to "http://localhost/svn". If you want a different URI for your repository, change the path after "<Location ..." line. Note: The above changes are NOT intended as "all you need" regarding apache configuration. It's only intended to get you a running example with subversion. You should review the manual and make any other configuration changes you deem appropriate (Hint: "http://localhost/manual")

10. Copy the following files from the subversion bin directory (default is "c:\program files\subversion\bin") to the apache bin directory (default is "c:\program files\apache group\apache2"):
libdb43.dll
intl3_svn.dll
mod_authz_svn.so
mod_dav_svn.so

11. From a command prompt, run "net start apache2".

12. If it fails to start, examine the Application event log. It should describe the error in enough detail for you to fix it (generally a configuration file error is the culprit). If you get a "not found" error loading module "mod_dav_svn.so", then ensure you completed step 7 above correctly.

13. From a command prompt, run "svn ls https://localhost/svn" (use http instead of https if you didn't install the SSL support) and it should display the root of your repository.

14. Further reading (for authentication and for authorization):
http://geekswithblogs.net/flanakin/archive/2005/08/31/51743.aspx
http://www.subversionary.org/sspidomainauth
http://www.erenkrantz.com/oscon/OSCON%202003%20Subversion%20WebDAV.pdf

SVN for Dreamweaver

Note to self: Try SVN for Dreamweaver. Thus far I've only used homesite+ 5.5 and I just got into eclipse, cfeclipse, and subeclipse. Each and all of them have pros and cons. Eclipse in this date still does not support RDS or remote FTP browsing. It doesn't have a built-in database explored, but it does have some nice features such as compare lo local history... I think that's great!
Homesite does not have subversion integration... I tried CVS, RCS-CS and didn't quite like it.
I have been never a huge fan of dreamweaver... it has too much designer-like interface that sacrifices too much.
Now Macromedia announced they’ll join the cfeclipse force and maybe something good will come out of that. Cfeclipse is still improving the cfmx7 tag support.

I found this link today for a SVN integration into dreamweaver… Dreamweaver has issues modifying files directly into the servers… it is the slowest connection I have every experienced… Oh yeah, not to mention that it constantly crashes … Anyway, I will give it another chance … I’ll give it a try tomorrow and post further notes.

Maybe DW will be the solution … RDS, remote FTP browsing, database connectivity, version control… We shall see.

More Entries

This blog is running version 5.9.003. Contact Blog Owner