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 842A217201 for ; Wed, 1 Oct 2014 16:14:22 +0000 (UTC) Received: (qmail 20434 invoked by uid 500); 1 Oct 2014 16:14:22 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 20376 invoked by uid 500); 1 Oct 2014 16:14:22 -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 20366 invoked by uid 99); 1 Oct 2014 16:14:21 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Oct 2014 16:14:21 +0000 X-ASF-Spam-Status: No, hits=0.7 required=5.0 tests=RCVD_IN_DNSWL_NONE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [212.82.99.217] (HELO nm2-vm6.bt.bullet.mail.ir2.yahoo.com) (212.82.99.217) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Oct 2014 16:13:55 +0000 Received: from [212.82.98.42] by nm2.bt.bullet.mail.ir2.yahoo.com with NNFMP; 01 Oct 2014 16:13:54 -0000 Received: from [212.82.98.34] by tm3.bt.bullet.mail.ir2.yahoo.com with NNFMP; 01 Oct 2014 16:13:54 -0000 Received: from [127.0.0.1] by omp1003.bt.mail.ir2.yahoo.com with NNFMP; 01 Oct 2014 16:13:54 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 332711.14158.bm@omp1003.bt.mail.ir2.yahoo.com Received: (qmail 12553 invoked by uid 60001); 1 Oct 2014 16:13:54 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btopenworld.com; s=s1024; t=1412180034; bh=trORzoq/VX0wON/jE6booH8/lD8JeXjXDUueUP+NPig=; h=References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=RA4OTLQFCZhkIgHK97X3kbV7GBkgx+hPfd0fNsWzSrepnNmDd8RjtijccVKKFgfR6UMZ0UkIWWSGBxewVZjCnS9QIP5hgbM4FdDIHDurVmWWBDzfwHdY2ANLDc32XQN6Sb8EQ4lPdEn24r3JoriaOqsmdibXK3icZqjb4uZj8gg= X-YMail-OSG: uoB1AsoVM1kB26xvJaT1gI_OuH2FbSLHfOwQ3__DBXaoBbU f3VVsAyP02j75DgdLIjDu79iY.tNs7.5LP8bGW.FF0Fa8L15v.UyKt1MG9RP 8qpl1fwPybjEbuOPQgFmSKtobH_N9vCnFsKVhN7Hq7URk9GShoUSQWqeIAYc 86PVcwIkhTsabHP7xi_XFmY1S.GjM4QeuOBG5fFmPupxgA2eXBx7fJMoHB5G P7Zmqwxj4gOTSvJ3DHrg2Z5nrPFOaFU7C5pebd10ehqxIH3TNXO2YeBEV1pq qteIHgCBY1zKiShs4Ez_LoY_QyK_kmlTaCUeC9yKBfeE5KndzVA6UkKtuedt D7KLr0hWmBFcYDeFvph.NDXQFJVRYOijSSimShocmQn0Y2Jsb6V7uS6e3HtA UEVEJ4THbqXrbY7BT4OKFEZJqMAohSXCIXuHaQs9HR9vjbep.XhVf8aujyI1 mfue1VoOjPaPOi66GioBUk0az74.ovBperdwnC4h6av_4AuteQ_0LdTaefWA DRwQ887kyFlCkcnaJgEo_bWzkVZL8VKWgV5dH8o6CyKehIzu.xRP6uu9baoY D0kaqsn4bcqV09yJTgNXQ.v3SkbU1lFFgj0e3T0GHJcmhH8U8XPiHOtUPt.b _BkoJbmn5wey3M5vCDrRJiGo7Z7MKWiJ9GNjd3OdynSkifkO0pG6RW09M65a aHSFkTe.ECgOgxKYKnpeAkRdxD2j5Oerznfex_xZz6veqTlbaO0tO196cRdj 4HXwhEkQxLzGdyNcYnhEbSv1PLQ3jZ8Pvv8fcuqFRSlmsH2QEc9AVVMlkg6Z Bc34FeKUKIevnBoFIAaaw.lEUCs4eY2CkaLWQMTmyMOlfi0HnGu5bdZQTCFF tXLxMcuSO5bUZ3dYNMkXPoc.QpSd53ZwSrP3DxOT_cty1akPZrj_4EvuJPPb ZTNs- Received: from [83.216.134.177] by web87704.mail.ir2.yahoo.com via HTTP; Wed, 01 Oct 2014 17:13:54 BST X-Rocket-MIMEInfo: 002.001,SSBzaG91bGQgaGF2ZSBzYWlkLCB0b286IEknbSBub3QgcGxhbm5pbmcgb24gdGFraW5nIHRoaXMgYW55IGZ1cnRoZXIsIG15c2VsZi4gQW55Ym9keSB0aGF0IHdhbnRzIHRvLi4uIGZlZWwgZnJlZS4gKERpc2N1c3Mgb24gdGhpcyBsaXN0IGZpcnN0LCBhcyB1c3VhbCwgb2YgY291cnNlLikKCi0gSnVsaWFuCgpKdWxpYW4gRm9hZCB3cm90ZToKPiBEYW5pZWwgU2hhaGFmIHdyb3RlIGluIHRoZSB0aHJlYWQgIk5vIG5vLW9wIGNoYW5nZXMiOgo.PsKgIFNob3VsZCB3ZSBwcm92aWRlIGFuICJvZmZpY2lhbCIgd2EBMAEBAQE- X-Mailer: YahooMailWebService/0.8.203.696 References: <1412157162.51628.YahooMailNeo@web87703.mail.ir2.yahoo.com> Message-ID: <1412180034.95203.YahooMailNeo@web87704.mail.ir2.yahoo.com> Date: Wed, 1 Oct 2014 17:13:54 +0100 From: Julian Foad Reply-To: Julian Foad Subject: Re: Official way to create an empty revision To: "dev@subversion.apache.org" Cc: Daniel Shahaf In-Reply-To: <1412157162.51628.YahooMailNeo@web87703.mail.ir2.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org I should have said, too: I'm not planning on taking this any further, mysel= f. Anybody that wants to... feel free. (Discuss on this list first, as usua= l, of course.)=0A=0A- Julian=0A=0AJulian Foad wrote:=0A> Daniel Shahaf wrot= e in the thread "No no-op changes":=0A>>=A0 Should we provide an "official"= way to create an empty revision? That=0A>>=A0 is, a revision whose changed= -paths list is empty?=0A>> =0A>>=A0 Use-cases:=0A>> =0A>>=A0 1. Suppose las= t backup is r100 and revisions r101:r105 were lost; then=0A>>=A0 after rest= oring the backup, the admin would create 5 empty revisions.=0A>> =0A>>=A0 2= . Force an empty revision for whatever reason, such as to make the=0A>>=A0 = revnums sync to something:=0A>>=A0 2.1. See r3 of the regression test merge= _tests.py#125 svnmucc_abuse_1().=0A>>=A0 2.2. W hen loading our repository = to the ASF repository, if Joe had=0A>>=A0 created 26 empty revisions, then = The Offset would have been 840100=0A>>=A0 rather than 840074, which would m= ake our mental math easier.=0A> =0A> Hi Daniel. It seems a reasonable tool = to have in the svn admin's tool kit. =0A> Perhaps not often, but people do = sometimes want this. I found two web pages =0A> where people discussed this= . One wrote a script that spits out the appropriate =0A> few lines of dump = file text to represent an empty rev, N times [1]; the other is =0A> worse, = committing N changes to a temporary repo, dumping it and filtering =0A> eve= rything out [2].=0A> =0A> I'm assuming this proposal is restricted to the a= dmin side. Your use cases =0A> 1. and 2.2 are both admin use cases. Your us= e case 2.1 is a test which uses a =0A> client-side commit to make an uninte= resting revision, in order to make the =0A> subsequent revision numbers mat= ch (modulo 10) those in the original use case. =0A> While people no doubt d= o this sort of thing sometimes in real life, I can't =0A> think of a genera= l behaviour that would make sense from the client side. In a =0A> shared re= pository, you never know what revision number your next commit will =0A> ha= ve.=0A> =0A> For a UI, I can envisage two useful ways to expose this functi= onality: commit N =0A> empty revisions as a stand-alone operation, and comm= it N empty revisions before =0A> the first revision loaded from a dump stre= am. Obviously the former is =0A> sufficient; the latter is convenient but i= s insufficient on its own unless we =0A> also give 'svnadmin load' a conven= ient way to specify there is no dump =0A> stream to load.=0A> =0A> Stand-al= one:=0A> =0A> =A0 svnadmin/svnlook commit-empty-revs N=0A> =A0=A0=A0 Commit= N empty revisions.=0A> =0A> As an option to 'svnadmin load':=0A> =0A> =A0 = svnadmin load --prefix-empty-revs N=0A> =A0=A0=A0 First commit N empty revi= sions.=0A> =0A> or, expressing a similar behaviour in a different way:=0A> = =0A> =A0 svnadmin load --commit-first-loaded-rev-as X=0A> =A0=A0=A0 First c= ommit enough empty revisions to make the first loaded revision=0A> =A0=A0= =A0 be committed as revision number X.=0A> =0A> What should the author and = log message be on the empty revs? I suppose these =0A> need to be optionall= y specified, defaulting to blank?=0A> =0A> What should the date stamps be o= n the empty revs? A thought: it seems cleaner to =0A> specify that they sho= uld all have the same date stamp than that they =0A> do/don't/may all have = different date stamps. (Imagine a future back-end in =0A> which we can crea= te millions of 'virtual' empty revs in O(1) time and =0A> space as long as = their rev-props are all identical.) The default for =0A> 'svnadmin load --p= refix-empty-revs' without '--ignore-dates' =0A> ("ignore revision date stam= ps found in the stream") should, I suppose, =0A> be that all the prefix emp= ty revs have the same date stamp as the first revision =0A> loaded.=0A> =0A= > - Julian=0A> =0A> [1] =0A> =0A> [2] =0A> =0A>=0A