This site will look much better in a browser that supports web standards, but is accessible to any browser or Internet device.
I don't often write about something quite this geeky, but it is just too cool not to share.
Several months ago, I read about an interesting module for Linux called SSHFS. This module allows you to mount a file system over SSH. This gives a way to access files on another server that you don't have any form of shared access such as NFS or Windows shares. All you need is SSH access to the machine that you want to access. It sounded interesting, but I didn't really have a need for it.
A few months ago, I had been doing a lot of work that involved comparing two source code trees. Depending on various factors, I would move some changes from one of the trees to another. I spend a lot of my time in the gvim editor and I've found the gvimdiff
mode to be quite helpful for this sort of editing.
Unfortunately, gvimdiff
only compares two files, not two directory trees. I had wrapped some scripting around my gvimdiff
call to provide some support for the directory merge, but it was awkward and not very pleasant. While looking for something else, I stumbled across the DirDiff vim
script. This did exactly what I wanted. I mapped a couple of function keys to diffget
and diffput
to simplify my work. Life was good.
Then one day, I needed to work on some files on another server where I had SSH access. I used SSHFS to mount the other system and found working that way to be quite comfortable. I was looking at files on the two systems and without thinking executed DirDiff
to compare the differences. After working my way through a few files, it hit me what I was doing. I had files from one machine open in the left window and files from another open in the right window and I was copying bits of code back and forth between the two machines without any real effort.
In some circumstances, (like the one I was in) this is incredibly useful. Much more useful than copying files back and forth or making little changes and uploading files. I wasn't completely replicating the files on both servers, so an rsync
approach would not work.
I know this won't be useful (or interesting) to everyone, but it really made my life easier.
Practical Subversion, second edition
Daniel Berlin and Garrett Rooney
Apress, 2006
Two years ago, I reviewed the first edition of Practical Subversion. The second edition has substantially updated the reference information about the Subversion commands. The previous edition had been based on a pre-1.0 version of the program and had somewhat incomplete coverage of the program options. So the update was sorely needed. The production quality of the new edition is also much better. Better font choice and improvements in editing make this edition seem much more professional than the previous edition.
Unfortunately, this edition keeps the structure of the first edition, which I found awkward. The book tries to be both a definitive reference and a practical guide to the usage of Subversion. These very different goals would have been better served by providing the reference information in one section and the guide in another. However, the authors chose to intermingle the two streams of material. Like the first edition, this tends to break the flow of the text. If you are just interested in the practical advice, you are suddenly interrupted with a reference section detailing all of the options for a given subcommand. If you are looking for the options for a single command, you may need to skip over some advice sections to reach the detail that you need.
The bad news is that this structure prevents the book from being either a great reference or a great practical guide. With Version Control with Subversion freely available, there is not as much need for a definitive reference.
I would almost like to see all of the reference material removed or put in an appendix. If you want that information, the definitive on-line reference would be better anyway. More material exploring best practices and giving example usage of some of the commands would have been much more useful to me.
On the other hand, the book still provides a substantial amount of benefit. The sections on the programming API and using the SVN libraries from other languages are once again appreciated. The appendix comparing Subversion to other version control software is also very handy.
All in all, I think I would still recommend this book. The practical advice is effective if not quite as extensive as I would like. The Best Practices chapter is still one of the highlights of the book.