Login | Register
My pages Projects Community openCollabNet

Discussions > users > Re: AW: FSVS 1.0.5 released

Discussion topic

2020-03-13: This site is going to be decommissioned and shut down very soon. Please copy and archive any data you wish to keep ASAP

Hide all messages in topic

All messages in topic

Re: AW: FSVS 1.0.5 released

Author pmarek
Full name P.Marek
Date 2006-03-13 08:57:17 PST
Message On Monday 13 March 2006 13:43 Markus Karg wrote:
> I didn't actually get what your tool is good for (I understand what it
> aims, but I do not understand the benefit it brings compared to just
> keeping my whole disk mirrored in a SVN repository). Can you explain what
> the benefit is?
It does mirror the disk in a SVN repository.
But not via the svn command line utility (which I believe you use), but via
the fsvs program, which is another client which can be used against a
subversion repository.
(Hooray for the pluggable subversion structure :-)

The differences between the svn client and fsvs are:
- fsvs keeps the modification timestamp, the owner, group and access mode
  of your files in the repository, and restores them on update/export.
- svn is restricted to files, directories, and symlinks; fsvs does device
  nodes too.
- The svn client needs the .svn-directories, with the full-text of your
  text-base in them; that means 4x the inodes, and >2x the space needed
  in your filesystem.
  Because of that is FSVS faster (at least IMO, I didn't benchmark it
  against svn); it's sometimes faster than a find, because it has the nodes
  sorted by inode in it's datafile, and so can drive the disk in a nearly
  linear fashion, whereas svn fetches information for *many* files, which
  pollute the file and inode cache, ...
- There is some resistance in svn against including full-meta-data versioning;
  the arguments are code bloat and maintenance.

As fsvs won't do many of the tasks subversion does, it has a much smaller code
size; and (IMO) is much cleaner, too.
The code that deals with setting the executable bit in subversion is
distributed (in the form of functions calls) in a lot of client commands;
there's update, checkout, export, diff, repos-diff, and so on.
In fsvs I'm careful to have a few more if-statements in the correct places,
but avoid many code duplications (see eg. - I use the same functions in
export and update. Although I have to admit that shared functions have to be
moved to a seperate file (they will)).

If nothing else, the first three points above make fsvs the clear winner in a
comparision against svn - that's why I wrote it :-)

Hope that helps!


Messages per page: