subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Hartman <hartman.nat...@gmail.com>
Subject Re: Shelve & checkpoint - next steps
Date Tue, 22 May 2018 02:47:48 GMT
On Mon, May 21, 2018 at 12:01 PM Julian Foad <julianfoad@apache.org> wrote:

> Since http://svn.apache.org/r1831908 the "svn status" command can operate
> directly on a shelf.
>
> $ svn shelves -q
> foo
> $ svn st --cl svn:shelf:foo
> --- Changelist 'svn:shelf:foo':
> A       D1
> A       new-file
> MM      config.txt
> D       hello.txt
> A       D1/D2
>
> The main WC state for those paths may be unmodified, or modified in a
> completely different way:
>
> $ svn st
> A  +    D1
> M       config.txt
>
> This, to me, is the beginning of the more exciting side of shelving, when
> it is no longer doing just what a simple add-on script could do, but is
> becoming more deeply integrated into the work flows and commands that users
> are already familiar with.


Very nice! When I get some free cycles -- I'm assuming I have to build a
client myself to try it? :-)

An obvious CLI enhancement would be translate a new "--shelf=SHELF" to
> "--cl=svn:shelf:SHELF" and translate "--- Changelist 'svn:shelf:SHELF'" to
> "--- Shelf 'SHELF'".


I don't really see how changelists are related to shelves. I thought
changelists were a feature that should have been more descriptively named
"tags" or "filters" or "groups" or "attributes" or something. But I
probably misunderstand. But in any event I like this idea better:

An alternative is to extend the 'revision specifier' dimension instead, as
> I mentioned before, like this (made-up example, not implemented):
>

> $ svn diff --summarize -r foo
> --- Shelf 'foo':
> A       D1
> A       new-file
> MM      config.txt
> D       hello.txt
> A       D1/D2


This makes sense to me because a shelf is like a potential future revision
(or one in the making). And this syntax is so much cleaner and shorter.
Plus this lends itself to things like:

$ svn diff -r 141:foo

to get the difference between an arbitrary revision and the contents of a
shelf. Whether that would be a nightmare to implement is another story
altogether, as is what to do when shelves become a series of checkpoints
and you want differences between arbitrary items in the series...

Anyway, my 2 cents for now.

Mime
View raw message