From dev-return-39005-archive-asf-public=cust-asf.ponee.io@subversion.apache.org Tue Feb 12 10:34:21 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 48DF418002F for ; Tue, 12 Feb 2019 11:34:21 +0100 (CET) Received: (qmail 13700 invoked by uid 500); 12 Feb 2019 10:34:20 -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 13690 invoked by uid 99); 12 Feb 2019 10:34:20 -0000 Received: from mail-relay.apache.org (HELO mailrelay2-lw-us.apache.org) (207.244.88.137) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Feb 2019 10:34:20 +0000 Received: from auth2-smtp.messagingengine.com (auth2-smtp.messagingengine.com [66.111.4.228]) by mailrelay2-lw-us.apache.org (ASF Mail Server at mailrelay2-lw-us.apache.org) with ESMTPSA id 709902748 for ; Tue, 12 Feb 2019 10:34:19 +0000 (UTC) Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailauth.nyi.internal (Postfix) with ESMTP id BDCA221C1C for ; Tue, 12 Feb 2019 05:34:18 -0500 (EST) Received: from web3 ([10.202.2.213]) by compute7.internal (MEProxy); Tue, 12 Feb 2019 05:34:18 -0500 X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedtledruddtuddgudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfquhhtnecuuegrihhlohhuthemucef tddtnecuogetfeejfedqtdegucdlhedtmdenucfjughrpefkhffvggfgtgfoffgjfhfuse htjeertdertdejnecuhfhrohhmpefluhhlihgrnhcuhfhorgguuceojhhulhhirghnfhho rggusegrphgrtghhvgdrohhrgheqnecuffhomhgrihhnpegrphgrtghhvgdrohhrghenuc frrghrrghmpehmrghilhhfrhhomhepjhhulhhirghnodhmvghsmhhtphgruhhthhhpvghr shhonhgrlhhithihqdekgeekkedtjedvtddqudeltddujeduvdekqdhjuhhlihgrnhhfoh grugeppegrphgrtghhvgdrohhrghesfhhorggurdhmvgdruhhknecuvehluhhsthgvrhfu ihiivgeptd X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 99) id 489B99E5C8; Tue, 12 Feb 2019 05:34:18 -0500 (EST) Message-Id: <1549967658.3119486.1656200152.26BDD97C@webmail.messagingengine.com> From: Julian Foad To: dev@subversion.apache.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" X-Mailer: MessagingEngine.com Webmail Interface - ajax-950b8783 Date: Tue, 12 Feb 2019 10:34:18 +0000 In-Reply-To: <1549026384.1856053.1648581832.106245A9@webmail.messagingengine.com> References: <1547485083.3280998.1634275992.33972369@webmail.messagingengine.com> <1549026384.1856053.1648581832.106245A9@webmail.messagingengine.com> Subject: Shelving v3 started On the 'shelving-v3' branch: * shelving uses a separate 'real' WC to store each shelf * copying local modifications between the (main) WC and a shelf is, at last, done the Right Way using an Editor API: - "open(user's WC).replay_local_mods()" piped to "open(shelf-storage-wc).local_mods_editor()". Benefits: * every kind of committable change will be supported * no shelf-specific code for storing and manipulating changes, just high level glue code Problems: * bug in reverting shelved changes from the main WC after shelving them: - added nodes don't get deleted from disk, even with 'svn revert --remove-added' - https://issues.apache.org/jira/browse/SVN-4798 - causing XFAIL in shelf_tests 18 "shelve mkdir" and 20 "shelve replace dir" * unshelve doesn't attempt to merge - assumes it's writing to a WC that matches the shelf base state - causing XFAIL in shelf_tests for merge and conflict tests (25, 26, 27, 28, 30) * copying the WC base state is crude, space-inefficient - currently using a simple recursive copy of the entire WC dir including '.svn' metadata - currently puts shelves outside the main WC, in a sibling dir named, ".shelves"; that's just to avoid infinite recursion when doing the recursive dir copy, and could be changed to "/.svn/experimental/shelves/v3" with a little tweak. The only reason this is committed to a branch rather than trunk is that it is writing to a directory outside the WC. It would be worth tweaking that back inside ".svn" as soon as possible, in order to move the development back onto trunk. Julian Foad wrote on 2019-02-01: [...] > Baby steps, in order: > (1) Shelve committable changes, with very simple capture of WC base > state (maybe assumes single-revision, for example): a good enough first > step. Yay, working! > (2) Better capture of base state. > (3) Better replay of "copy" operations, reading WC local storage to > fetch their base rather than contacting the repo. > (4) Support some uncommittable changes such as "local move". [...] -- - Julian