On Mon, Jul 10, 2017 at 2:59 PM, Julian Foad <jul...@assembla.com> wrote: > Dear Subversion Developers, > > I am delighted to announce that I am working with Assembla to develop > shelving and checkpointing functionality in Subversion. These have > been on the wish list for many years, and are becoming ever more in > demand since the popularity of git is making more users appreciate the > benefits of local operations. > > Based on our many discussions in the past, along with a fresh look at > how other VCS's implement these features, I have written down the > requirements and started working on a design in the document > Shelving-Checkpointing Dev [1]. I will follow up with an HTML email > containing a copy of today's version. I invite you to leave comments > directly in Google Docs, or send them by reply here, as you prefer. > > I will be the project lead on this within Assembla. I will regularly > demonstrate small increments of functionality, which will also act as > calls for feedback. We want to keep the scope quite small to get it > done as quickly as possible. > > Please read through and if you are able to contribute with any > suggestions or practical help, that would be wonderful. Thanks! > > - Julian > > > References: > [1] Shelving-Checkpointing Dev doc. (J Foad) > https://docs.google.com/document/d/1PVgw0BdPF7v67oxIK7B_Yjmr3p28ojabP5N1PfZTsHk/edit#
Hi Julian, That's great news! I hope this will give Subversion some much needed extra momentum (together with the tree conflict resolution improvements of 1.10). Indeed, these "local / offline" features have been on many people's wish list for a long time. I've quickly scanned your google docs, but have to go through them in some more detail. I'll try to dig into them and give some feedback if I can. One thing that crossed my mind: a nice additional feature that probably could be built on top of shelving would be "partial commit" (committing only some hunks out of a modified file). I've recently looked up past discussions about this, in response to a post on users@. See my response with a lot of references here: https://svn.haxx.se/users/archive-2017-06/0004.shtml (For the "partial commit" feature, start reading below "Is there an option to inspect each file further line-by-line for lines that have changed to either be selected or excluded from the commit?") As I explained in that post, TortoiseSVN has implemented this in some way with what they call "restore after commit" [1]. So I imagine we could do the same by (1) making the user select some lines he wants to commit; (2) shelve the modifications that were not selected; (3) commit; (4) unshelve. We even have a command line UI (sort of) for selecting lines out of a diff, namely the UI stsp created for handling text conflicts interactively. Just a thought ... Of course fleshing out the fundamentals of the Shelving and Checkpointing features in the first place will be most important. [1] https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-commit.html#tsvn-dug-commit-restore -- Johan