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 915A81732B for ; Wed, 1 Oct 2014 09:53:14 +0000 (UTC) Received: (qmail 70831 invoked by uid 500); 1 Oct 2014 09:53:14 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 70779 invoked by uid 500); 1 Oct 2014 09:53: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 70760 invoked by uid 99); 1 Oct 2014 09:53:13 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Oct 2014 09:53:13 +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 (athena.apache.org: local policy) Received: from [212.82.99.227] (HELO nm4-vm7.bt.bullet.mail.ir2.yahoo.com) (212.82.99.227) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Oct 2014 09:53:08 +0000 Received: from [212.82.98.45] by nm4.bt.bullet.mail.ir2.yahoo.com with NNFMP; 01 Oct 2014 09:52:42 -0000 Received: from [212.82.98.32] by tm6.bt.bullet.mail.ir2.yahoo.com with NNFMP; 01 Oct 2014 09:52:42 -0000 Received: from [127.0.0.1] by omp1001.bt.mail.ir2.yahoo.com with NNFMP; 01 Oct 2014 09:52:42 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 620427.59810.bm@omp1001.bt.mail.ir2.yahoo.com Received: (qmail 5749 invoked by uid 60001); 1 Oct 2014 09:52:42 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btopenworld.com; s=s1024; t=1412157162; bh=gSBR8k7zLo2dJ8uey8hc5Qhuhe71/ywkybBwecnErl4=; h=References:Message-ID:Date:From:Reply-To:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=GiYLJJjLGGRJDuylpvdsSjUjA9Z0e/6XUK6pgXoTIXJsIz5VDz68SZ7hlmuCu1dmufP9/I3tA9ybUwvSxjJsKGWk/HkkBzDk0zjhotgo++A8BXi4eZR4UAXoe6l5f0pTSvfiqNkZOJm+krXnuovVrm5ImsROSu1Br3FrDEDMxNk= X-YMail-OSG: LFQql8sVM1lDYBJEE14xXIhi1I423.E8NbOiesafelMylZ9 85Za5PSRLVOHoyhPUHwG6R2P9ndlCXSEAFSfa0EeP0i7z6YlYtSciuqQoM2D UaRMGXddjVPJGgC6BI8OjSBKwfuJ4OwVvxYSt7motGmrYoC9FwGGJ0EM3Dft b1QW8g0iLSzMeO3M9Fkm7I.F7TFD9.G1qHR91O5qj3SWi.L3FZEWKlykWcdb H7MYd4ixekYDNJMb8CIp.1YDH_AwpXjGwbMq37QxGJ48sU68W3mrAWLUlYcT vrk_DxHgmsX.NDtq94Wx_CBGI8ab350N.IpjlHzkwCKwTy3S8Amghj3.HdxH w4O6ZhhC5a4mHIGW440TlVNl2w_TMMYdjRG1.VH1e9h3cW9FtRqqLhw0_aQs qIseR4UqVysoSOWPVe_MP7WvJFrJ3famosTzIkh7OQSQgEcrKB4RTnMODabK dSl3rX3MQ.WggZfY6r4zcIB8jUC5kkpnyLvdmKxy9kYqKM6zIZqXeegnUB0R sZXPu7lCsfjNLF50EP_9jKrQDXBQ_o7W57QWviSzAPXE3x.GxF9FnTQBhDXL Z.HVJONtaFxXP1T9ItdQLF0ZZSvO6ZiDKLK34AxQTYn_m6ZfgqYD3O6MedYN 9DpYklYnIpPQkrHyc4L2qqQ6EbdTpbZY7ncvI3yzW6QjBaM.fsQK9siTorPs E07vMRVA9TKVHkFfIIga2nVAqycc5OxKws45creT_4F0FJYCdVe7op2byHYe AhuM11OGHTOLDvaBwhb4G1JCkdG1MjosXxTnG0YVBIZBzbmhPwDxfPxUkY5F ydOPF.yoP3rbxbTDVuqLXIRumQgzHRWNFMBMpfhxJZAFmLl1itxSkXV.vmi8 tL.Fj.ke8NAhwXjG7YOQsz2DN5CobKX_SUthVv189I13Rfv2yJlKm1cJibCw q Received: from [83.216.134.177] by web87703.mail.ir2.yahoo.com via HTTP; Wed, 01 Oct 2014 10:52:42 BST X-Rocket-MIMEInfo: 002.001,RGFuaWVsIFNoYWhhZiB3cm90ZSBpbiB0aGUgdGhyZWFkICJObyBuby1vcCBjaGFuZ2VzIjoKPiBTaG91bGQgd2UgcHJvdmlkZSBhbiAib2ZmaWNpYWwiIHdheSB0byBjcmVhdGUgYW4gZW1wdHkgcmV2aXNpb24_wqAgVGhhdAo.IGlzLCBhIHJldmlzaW9uIHdob3NlIGNoYW5nZWQtcGF0aHMgbGlzdCBpcyBlbXB0eT8KPiAKPiBVc2UtY2FzZXM6Cj4gCj4gMS4gU3VwcG9zZSBsYXN0IGJhY2t1cCBpcyByMTAwIGFuZCByZXZpc2lvbnMgcjEwMTpyMTA1IHdlcmUgbG9zdDsgdGhlbgo.IGFmdGVyIHJlc3RvcmluZyABMAEBAQE- X-Mailer: YahooMailWebService/0.8.203.696 References: Message-ID: <1412157162.51628.YahooMailNeo@web87703.mail.ir2.yahoo.com> Date: Wed, 1 Oct 2014 10:52:42 +0100 From: Julian Foad Reply-To: Julian Foad Subject: Official way to create an empty revision To: "dev@subversion.apache.org" Cc: Daniel Shahaf 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 Daniel Shahaf wrote in the thread "No no-op changes":=0A> Should we provide= an "official" way to create an empty revision?=A0 That=0A> is, a revision = whose changed-paths list is empty?=0A> =0A> Use-cases:=0A> =0A> 1. Suppose = last backup is r100 and revisions r101:r105 were lost; then=0A> after resto= ring the backup, the admin would create 5 empty revisions.=0A> =0A> 2. Forc= e an empty revision for whatever reason, such as to make the=0A> revnums sy= nc to something:=0A> 2.1. See r3 of the regression test merge_tests.py#125 = svnmucc_abuse_1().=0A> 2.2. W hen loading our repository to the ASF reposit= ory, if Joe had=0A> created 26 empty revisions, then The Offset would have = been 840100=0A> rather than 840074, which would make our mental math easier= .=0A=0AHi Daniel. It seems a reasonable tool to have in the svn admin's too= l kit. Perhaps not often, but people do sometimes want this. I found two we= b pages where people discussed this. One wrote a script that spits out the = appropriate few lines of dump file text to represent an empty rev, N times = [1]; the other is worse, committing N changes to a temporary repo, dumping = it and filtering everything out [2].=0A=0AI'm assuming this proposal is res= tricted to the admin side. Your use cases 1. and 2.2 are both admin use cas= es. Your use case 2.1 is a test which uses a client-side commit to make an = uninteresting revision, in order to make the subsequent revision numbers ma= tch (modulo 10) those in the original use case. While people no doubt do th= is sort of thing sometimes in real life, I can't think of a general behavio= ur that would make sense from the client side. In a shared repository, you = never know what revision number your next commit will have.=0A=0AFor a UI, = I can envisage two useful ways to expose this functionality: commit N empty= revisions as a stand-alone operation, and commit N empty revisions before = the first revision loaded from a dump stream. Obviously the former is suffi= cient; the latter is convenient but is insufficient on its own unless we al= so give 'svnadmin load' a convenient way to specify there is no dump stream= to load.=0A=0AStand-alone:=0A=0A=A0 svnadmin/svnlook commit-empty-revs N= =0A=A0=A0=A0 Commit N empty revisions.=0A=0AAs an option to 'svnadmin load'= :=0A=0A=A0 svnadmin load --prefix-empty-revs N=0A=A0=A0=A0 First commit N e= mpty revisions.=0A=0Aor, expressing a similar behaviour in a different way:= =0A=0A=A0 svnadmin load --commit-first-loaded-rev-as X=0A=A0=A0=A0 First co= mmit enough empty revisions to make the first loaded revision=0A=A0=A0=A0 b= e committed as revision number X.=0A=0AWhat should the author and log messa= ge be on the empty revs? I suppose these need to be optionally specified, d= efaulting to blank?=0A=0AWhat should the date stamps be on the empty revs? = A thought: it seems cleaner to specify that they should all have the same d= ate stamp than that they do/don't/may all have different date stamps. (Imag= ine a future back-end in which we can create millions of 'virtual' empty re= vs in O(1) time and space as long as their rev-props are all identical.) Th= e default for 'svnadmin load --prefix-empty-revs' without '--ignore-dates' = ("ignore revision date stamps found in the stream") should, I suppose, be t= hat all the prefix empty revs have the same date stamp as the first revisio= n loaded.=0A=0A- Julian=0A=0A[1] =0A[2]