Return-Path: X-Original-To: apmail-subversion-dev-archive@minotaur.apache.org Delivered-To: apmail-subversion-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 69AC97B5C for ; Wed, 12 Oct 2011 09:55:14 +0000 (UTC) Received: (qmail 3353 invoked by uid 500); 12 Oct 2011 09:55:14 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 3322 invoked by uid 500); 12 Oct 2011 09:55:14 -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 3315 invoked by uid 99); 12 Oct 2011 09:55:14 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Oct 2011 09:55:14 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [192.109.42.8] (HELO einhorn.in-berlin.de) (192.109.42.8) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Oct 2011 09:55:07 +0000 X-Envelope-From: stsp@stsp.name Received: from ted.stsp.name (ted.stsp.name [217.197.84.34]) by einhorn.in-berlin.de (8.13.6/8.13.6/Debian-1) with ESMTP id p9C9sib5017794 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 12 Oct 2011 11:54:44 +0200 Received: from ted.stsp.name (stsp@localhost [127.0.0.1]) by ted.stsp.name (8.14.5/8.14.3) with ESMTP id p9C9siBF011015; Wed, 12 Oct 2011 11:54:44 +0200 (CEST) Received: (from stsp@localhost) by ted.stsp.name (8.14.5/8.14.3/Submit) id p9C9siiL014265; Wed, 12 Oct 2011 11:54:44 +0200 (CEST) Date: Wed, 12 Oct 2011 11:54:44 +0200 From: Stefan Sperling To: Paul Burba Cc: dev@subversion.apache.org Subject: Re: O(n**3) behaviour in reintegrate merge Message-ID: <20111012095444.GC9845@ted.stsp.name> Mail-Followup-To: Paul Burba , dev@subversion.apache.org References: <20110910174850.GA31390@daniel3.local> <20110911081201.GK25324@ted.stsp.name> <20110911125336.GL25324@ted.stsp.name> <20110911125639.GA8009@daniel3.local> <20110912200515.GD21279@jack.stsp.name> <20110929094145.GB8773@jack.stsp.name> <20111011130511.GG10081@ted.stsp.name> <20111011133656.GH10081@ted.stsp.name> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang_at_IN-Berlin_e.V. on 192.109.42.8 On Tue, Oct 11, 2011 at 11:21:16AM -0700, Paul Burba wrote: > On Tue, Oct 11, 2011 at 6:36 AM, Stefan Sperling wrote: > > On Tue, Oct 11, 2011 at 03:05:11PM +0200, Stefan Sperling wrote: > >> So while I think your fixes should be backported to 1.7.1 ASAP, > >> I don't think the status quo is acceptable. How do we want to move > >> forward? > >> > >> For reference, here's the error message I'm getting: > > Hi Stefan, > > Yes, the error message is rather long. But as I've already said, this > reintegrate merge is a complete and total abuse of the reintegrate > feature. I'm not sure we can save every user from themselves if they > insist on doing strange things....but I've already made that point, > and it appears I'm in the minority, so I wont belabor it any further > :-) I don't agree with this. I wouldn't call it "abuse" of this feature. The user is clearly intending to reintegrate the branch. But one of the preconditions for reintegration isn't met. Much like trying to merge into a mixed-revision working copy, or a working copy with local modifications. Would you also call that "abuse"? I doubt that :) The user error is definitely not on purpose, and I don't see a point in punishing users for this error by stealing 3 or more minutes of their time gathering information of little value to them. Note that the user performing the reintegrate merge is not necessarily the same person who performed the cherry-picking merge which makes --reintegrate impossible. They might simply be unaware of what happened. > So while I'm a weak -0 on the basic premise of your patch[1], I won't > object to it. > > Paul > > [1] Re your present patch, the error message is created such that it > appears we have to sync the source branch (/fs-successor-ids) up to > HEAD: > But we need only catch up the branch to to youngest sync from trunk > (r1167546) for the reintegrate to be successful: Right. That should be fixed by printing the last revision of the last range which has already been merged. Of course, the patch isn't finished as it is. I just wanted to see how much of a difference it would make to stop downloading the log immediately when one missing operative revision was found. How about we meet in the middle? We could have the log message callback keep track of the number of missing operative revisions it found, and return SVN_ERR_CLIENT_NOT_READY_TO_MERGE if a certain limit is exceeded. In which case the error will end with " (one or more additional missing revisions not shown, for brevity)". Let's say we set the limit to a maximum of 42 missing operative revisions. Because 42 is the answer to life, the universe, and everything, and because this amount of missing revivions should fit well into the use case you have in mind, where only a few revisions are missing and the user would like to see them all at once without running the 'svn mergeinfo' command. What do you think? In my patch, the current limit is 1. It would be easy to extend this to 42 (or some other value) and adjust the error message accordingly.