Incremental file-list recursion has landed in CVS; Re: RSYNC + iNotify

Matt McCutchen hashproduct+rsync at
Sun Aug 5 20:59:54 GMT 2007

On 8/5/07, Buck Huppmann <buckh at> wrote:
> i'm just worried that the code is gonna collapse under the weight of
> so many options at some point--sorta like Windows

That's a legitimate concern and one that I have thought about myself.
I suppose it depends on what you mean by "collapse".  If you're
thinking of performance, I don't think 121 flags, or even 121 "if"
tests per file, is going to hurt anything measurably.

If you're thinking of correctness: no one is ever going to be able to
verify that rsync works properly with every possible combination of
options, but that's not the goal.  The goal is for it to work properly
in all situations in which it is actually used.  Testing each option
in isolation and in combination with the other options with which it
is most often used generally accomplishes this.  When it doesn't,
someone files a bug and the problem gets fixed.

Perhaps this rather loose perspective makes you uneasy.  It used to
make me uneasy, too, but then I realized that I don't use software
because its correctness has been proved; I use software because it
works for me and does what I need it to do.  In practical software
development, formal correctness is a means, not an end.  Some people
have to be reminded of this, myself included--take as evidence this
note I sent to the list:

So, no, I don't see a problem with rsync adding more and more options
to satisfy more and more needs.*  If a significant drop-off in
reliability results, I believe that Wayne will look into cleaning up
the code or removing or simplifying some options.  For comparison,
look at the Linux kernel.  It has about 2802 configuration options,
and I'm guessing it's unbuildable or unusable in many of the possible
configurations.  Still, it is widely used and accepted.

* This holds as long as the options are germane to rsync's role as a
general-purpose file copying tool.  Often, people propose the addition
of an option to rsync when there is a much better way to solve the
problem.  I myself fell into that trap: see .


More information about the rsync mailing list