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 5186D9B70 for ; Tue, 17 Apr 2012 18:51:23 +0000 (UTC) Received: (qmail 66011 invoked by uid 500); 17 Apr 2012 18:51:23 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 65957 invoked by uid 500); 17 Apr 2012 18:51:23 -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 65950 invoked by uid 99); 17 Apr 2012 18:51:23 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Apr 2012 18:51:23 +0000 X-ASF-Spam-Status: No, hits=0.3 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_SOFTFAIL,TO_NO_BRKTS_PCNT X-Spam-Check-By: apache.org Received-SPF: softfail (athena.apache.org: transitioning domain of andy@assembla.com does not designate 209.85.160.171 as permitted sender) Received: from [209.85.160.171] (HELO mail-gy0-f171.google.com) (209.85.160.171) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Apr 2012 18:51:15 +0000 Received: by ghbz17 with SMTP id z17so5624368ghb.16 for ; Tue, 17 Apr 2012 11:50:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding :x-gm-message-state; bh=gMldLjiaRujqKC7wOro3LzCapa3Cw6qden1Zg/p67Bk=; b=ps+zkU0et0SncC04LejDRJL+OVVZBOMeDTHEQBUzIwHkTFuU1UkPsIqe/sNADAZCop utwMy4eQxou/hexWvaoauaqHEZfXvG4Tp4MV6LFQBFrYsS/js2Vp8EIPuOEasPrFxt4W Gquh73yV4ZRvOT+D+K+o3MitUUy6rlxPg+tR+GFmbWR2agwhrBBMV5a0YOl5NmkpWPUK QduraOhEm3+ukhA06jjvb3uQbWQyiM8c2zrPpHWl3TWlUDYi6YbUjXKFKnUB/s0W6i4S AjEtyLNpCWOdMVCZwJkcR4msZBdiiAwHqos5ifjlfLAVGSL+fG5JFLcGMgFF/Auz/YsQ BaUQ== Received: by 10.236.125.168 with SMTP id z28mr16681024yhh.120.1334688653926; Tue, 17 Apr 2012 11:50:53 -0700 (PDT) Received: from [192.168.1.18] (pool-173-48-23-142.bstnma.fios.verizon.net. [173.48.23.142]) by mx.google.com with ESMTPS id 22sm90146143yhs.6.2012.04.17.11.50.52 (version=SSLv3 cipher=OTHER); Tue, 17 Apr 2012 11:50:53 -0700 (PDT) Message-ID: <4F8DBB84.3040808@assembla.com> Date: Tue, 17 Apr 2012 14:50:44 -0400 From: Andy Singleton User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.9) Gecko/20100915 Lightning/1.0b2 Thunderbird/3.1.4 MIME-Version: 1.0 To: dev@subversion.apache.org Subject: Re: Symmetric Merge -- Algorithm References: <4F8D91CD.4080105@assembla.com> <4F8D9D01.8030400@assembla.com> <4F8DB688.10905@apache.org> In-Reply-To: <4F8DB688.10905@apache.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Gm-Message-State: ALoCoQn4JOZ+DPMgqS9GeyPscc5XsrNIUbSWR+Hr3pNWcvKoSG3L+kBLCNrd9gqfnpngeuvHvz5u X-Virus-Checked: Checked by ClamAV on apache.org My motive is not PR. My motive is very specifically, this: I would=20 like to have a subversion merge that supports a modern code review=20 workflow. You commit to a branch, someone else reviews the commit, and=20 merges it into a shared build. If I can add that to my app, it helps=20 all of my svn users run a more scalable process. There are many apps, including my own, that implement this workflow with = git, etc. It's not possible now with subversion, because subversion=20 merge doesn't work well, except under special circumstances. Someone=20 needs to stand up and say: "This is an ugly baby". How did the baby get ugly? It's obvious. There are too many=20 constraints. You can't get a good merge when you are handling mixed=20 revisions and subtree merges with skeletal merginfo. You can't do it. =20 So, a bunch of very smart, very dedicated people are having a hard time=20 delivering a good merge. Those smart and dedicated people, including Julian, and including you,=20 should be freed up to do something that actually works. The migration path is simple. If you use all of the features of the old = merge, use the old merge. If you want to use a different merge that=20 doesn't like your old repository, make a clean branch with a clean=20 current version, and start using the different merge. It also seems clear that an open source project needs to give=20 contributors room to contribute. git merge has 5 different merge=20 "strategies". People plug in new ones when they need new ones. That=20 would work for subversion. On 4/17/2012 2:29 PM, Branko =C4=8Cibej wrote: > On 17.04.2012 18:40, Andy Singleton wrote: >> It sounds like there is a clear choice for the first release of >> Julian's Symmetric Merge project: >> 1) Add "symmerge" as a new command and leave the existing merge in pla= ce, >> 2) or try to replace the existing merge in one shot for all existing >> users. > This sound suspiciously like Assembla's "newmerge" pitch all over again= =2E > I'll refrain from commenting on the technical merits of such an idea, > only to note that I'll veto any solution that a) perpetuates the state > where the users have to deal with two different merge algorithms, and/o= r > b) creates a state of affairs when some forms of merges that are valid > today become suddenly invalid, or broken, with a new release of Subvers= ion. > >> If you asked me to try to replace all of the options and behaviors in >> the existing merge, I would say that it is a daunting task that will >> create delays. I would never take that as a deliverable for a agile >> project. > Delays to whose schedule? You'll have to get it into your head that thi= s > project does not live by some corporate buff's idea of schedule and agi= le. > >> I would build a new merge command that handles as much as possible >> of the workflow that we are trying to fix - sync and keepalive for >> trunk and feature branches. > No. That is /not/ the purpose of the symmetric merge project. Its > purpose is to make "svn merge" work correctly in all circumstances that= > can arise from the effects of "svn merge" as it exists today. > Specifically, to do away with the need for the --reintegrate option, an= d > to give the same or better results. There's not much slack here except > for the "or better" part, but that pretty much has to be an implicit > result of using a correct merge algorithm. > > Unless you can come up with a simpler plan that does not screw up > people's existing repositories. > >> I would have it halt politely if it found a case it didn't like, an= d >> I would definitely include subtree merginfo and mixed revisions in >> cases that I don't like. > And tell what to users? "Sorry, you can't merge this because covering > this case wasn't mentioned in my schedule, and the problem was too hard= > to solve in a 10-minute Monday morning scrum?" > >> Then, I would exploit the new merge to implement modern code review= >> workflows - including a replacement for the emailed patches on this li= st. >> >> I would also use the new merge command as a documented template for >> anyone who wanted to implement a different merge algorithm, and I >> would open it up for contributions with some bounty rewards. You >> can't do that if you are trying to cram everything into one merge comm= and. > Oh give me a break. How many merge commands do other version control > systems have? One for each scrum target? > > > All this may sound harsh and unrestrained, but I've had a bellyful of > how certain parties continue to try to subvert this project for a > junkload of PR and newspeak jibberish and will not stand idly by and le= t > it happen again. > > > -- Brane > > P.S.: I can't wait for someone to explain how you do the hard bits of, > e.g., a C++ compiler in an agile manner. Leave out half the semantics > and 90% of the standard library, most likely.