Daniel Shahaf wrote in the thread "No no-op changes":
> Should we provide an "official" way to create an empty revision?  That
> is, a revision whose changed-paths list is empty?
> 
> Use-cases:
> 
> 1. Suppose last backup is r100 and revisions r101:r105 were lost; then
> after restoring the backup, the admin would create 5 empty revisions.
> 
> 2. Force an empty revision for whatever reason, such as to make the
> revnums sync to something:
> 2.1. See r3 of the regression test merge_tests.py#125 svnmucc_abuse_1().
> 2.2. W hen loading our repository to the ASF repository, if Joe had
> created 26 empty revisions, then The Offset would have been 840100
> rather than 840074, which would make our mental math easier.

Hi Daniel. It seems a reasonable tool to have in the svn admin's tool kit. 
Perhaps not often, but people do sometimes want this. I found two web 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].

I'm assuming this proposal is restricted to the admin side. Your use cases 1. 
and 2.2 are both admin use cases. 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 match (modulo 10) those in the original use case. 
While people no doubt do this sort of thing sometimes in real life, I can't 
think of a general behaviour that would make sense from the client side. In a 
shared repository, you never know what revision number your next commit will 
have.

For 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 
sufficient; the latter is convenient but is insufficient on its own unless we 
also give 'svnadmin load' a convenient way to specify there is no dump stream 
to load.

Stand-alone:

  svnadmin/svnlook commit-empty-revs N
    Commit N empty revisions.

As an option to 'svnadmin load':

  svnadmin load --prefix-empty-revs N
    First commit N empty revisions.

or, expressing a similar behaviour in a different way:

  svnadmin load --commit-first-loaded-rev-as X
    First commit enough empty revisions to make the first loaded revision
    be committed as revision number X.

What should the author and log message be on the empty revs? I suppose these 
need to be optionally specified, defaulting to blank?

What should the date stamps be on the empty revs? A thought: it seems cleaner 
to specify that they should all have the same date stamp than that they 
do/don't/may all have different date stamps. (Imagine a future back-end in 
which we can create millions of 'virtual' empty revs in O(1) time and space as 
long as their rev-props are all identical.) The default for 'svnadmin load 
--prefix-empty-revs' without '--ignore-dates' ("ignore revision date stamps 
found in the stream") should, I suppose, be that all the prefix empty revs have 
the same date stamp as the first revision loaded.

- Julian

[1] 
<http://www.timj.co.uk/2011/09/generating-emptypadding-revisions-in-an-svn-dump/>
[2] 
<http://stackoverflow.com/questions/7030041/can-i-create-a-subversion-repository-starting-at-another-number>

Reply via email to