Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id EE8A3200CB5 for ; Wed, 12 Jul 2017 16:04:34 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id ED1D9168E25; Wed, 12 Jul 2017 14:04:34 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 42E11168E1E for ; Wed, 12 Jul 2017 16:04:34 +0200 (CEST) Received: (qmail 1604 invoked by uid 500); 12 Jul 2017 14:04:31 -0000 Mailing-List: contact dev-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@subversion.apache.org Received: (qmail 1503 invoked by uid 99); 12 Jul 2017 14:04:30 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Jul 2017 14:04:30 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id E30E9196241 for ; Wed, 12 Jul 2017 14:04:29 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -2.397 X-Spam-Level: X-Spam-Status: No, score=-2.397 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.796, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id CvJn0nUvbSFB for ; Wed, 12 Jul 2017 14:04:25 +0000 (UTC) Received: from mail-vk0-f44.google.com (mail-vk0-f44.google.com [209.85.213.44]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 4D05A629C9 for ; Wed, 12 Jul 2017 13:26:45 +0000 (UTC) Received: by mail-vk0-f44.google.com with SMTP id f68so9052726vkg.2 for ; Wed, 12 Jul 2017 06:26:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=YC9zh2YYgEjxQ8ILbRb4TS0a/3Hiw4k5+GES0DzOxxk=; b=owhDdKj8KoWJsy0RA3xHxfGo6IYB7L0ZVGu9J4KTvFf5dVO8We5E6cLtNVRi37uBF8 F5v8SbN2PCrEc0tpUtvWAz5rJac8u9geVKgmfmYos3IvFTd+RHWX2lGs4mhiGvKf+scP VJO0Px1evIV9bTPUEQnKmvT1sER1iaAU1Xx5/cxbEM5c2jr2B3ADIHAj4zLxHzIiDtyR LoHqBgwWIZmj782aNaIHz4eKOJsCvsG1C+Tie8ZSFaDpPo/PU1UJsTN1XWbWnpW6mq8n Sn9qKIS/mcUZlAtJRn2xXvYzMOPV4tkZbqQbVO1k6vlxX1Z69c0d2IXxg89m9WhjragU JpFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=YC9zh2YYgEjxQ8ILbRb4TS0a/3Hiw4k5+GES0DzOxxk=; b=gjSus1X9brgtb+u7oxb39RvX5aeTJavkn0qlBGAo1JOi9k3wnhjaqjfbbzfVXEKVy6 kcoStx36wmmr4yadHAINVKX8XZ9dOATS1eVogqVtgM0aU7QjP6ECV1Nl/RdybpsVbfFY Bh+a6MTFUtpNIYlhKjlPykGAJdXQl4Wzykb5VpV8BKUYDQejWOvqaAfrLrAfATOqdZdp StSnblGblch4mdGnFMr5iU+eZZyXGIxCFc255fVtS/4ITb9qfiQBbZhptMPNCexHRc9X 2PCFD8kAwDzrWXXcPKsoQ5oTdhcRucSDox6fLR9bIq7wY2nqxZ1CI9VmGWYWBr9pCCp7 3cIg== X-Gm-Message-State: AIVw112HQ0DuE13mTrioKe93bHuRmBU4j9dlX0dMUldaRm5zC85Kg78K VUUrOkcl2fMJ6a/os1cDpmUFoWCgbg== X-Received: by 10.31.166.11 with SMTP id p11mr1239162vke.134.1499866004721; Wed, 12 Jul 2017 06:26:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.39.196 with HTTP; Wed, 12 Jul 2017 06:26:24 -0700 (PDT) In-Reply-To: References: From: Johan Corveleyn Date: Wed, 12 Jul 2017 15:26:24 +0200 Message-ID: Subject: Re: [RFC] Shelving and Checkpointing To: Julian Foad Cc: Subversion Developers Content-Type: text/plain; charset="UTF-8" archived-at: Wed, 12 Jul 2017 14:04:35 -0000 On Mon, Jul 10, 2017 at 2:59 PM, Julian Foad 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