Comment 7 for bug 320119

Revision history for this message
Eric Siegerman (eric97) wrote :

On Fri, 2009-08-07 at 04:14 +0200, <email address hidden> wrote:
> * log -r 1..2 now only shows r2

Rather than changing the default and making the old behaviour available as an option, please seriously consider keeping the current (i.e. closed-range) behaviour as default, and adding an --exclude-lower-bound (or some such) option to request a half-open range.

Besides avoiding an incompatible UI change, this would allow folks to try it both ways (e.g. using an alias to get the half-open behaviour) and so to decide, based on experience as opposed to theory, whether the default should indeed be changed. I strongly believe that more people would find half-open-by-default to be a PITA than an improvement -- but that's just one more opinion sloshing around. Better to do some usability testing *before* changing the default.

The main driver for this change seems to be that log is perceived to be "inconsistent" with diff, but there are good, logical reasons for that. Matthew Fuller has explained them better than I could do:
    http://article.gmane.org/gmane.comp.version-control.bazaar-ng.general/59931
    http://article.gmane.org/gmane.comp.version-control.bazaar-ng.general/51876

Note also that a closed range for "log" traces its ancestry not just to SVN, but all the way back to RCS -- and indeed to SCCS in a limited way [1] (assuming, that is, that CSSC [2] is an accurate emulation in this respect; I don't have real SCCS available to test against). Of course, "because that's the way it's always been done" can be an unreliable guide, but when it comes to usability details like this one, I believe that longstanding practice should carry significant weight.

In summary, it would be useful to add --exclude-lower-bound (perhaps by another name), but *not* to make that the default -- at least, not without some usability testing first.

[1] The SCCS "prs" command, analogous to "bzr log", doesn't let one specify both ends of the range. But one can specify either end:
   - "-e -rX.Y" says "from earliest revision to X.Y"
   - "-l -rX.Y" says "from X.Y to latest revision"
 In both cases, rev. X.Y is included in the output.

[2] http://cssc.sourceforge.net/

  - Eric