[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svnadmin hotcopy bug?

From: Neels J. Hofmeyr <neels_at_elego.de>
Date: Thu, 09 Oct 2008 08:04:54 +0200

Robert Dailey wrote:
> yes, I did use zip.
> Thank you for assisting me with the problem. Hopefully this will serve the
> community as a reminder and motivate someone to apply your patch :)
> On Wed, Oct 8, 2008 at 7:54 PM, eg <egoots_at_gmail.com> wrote:
>> Robert Dailey wrote:
>>> Hi,
>>> I was using hot-backup.py to backup a repository of mine, and I found out
>>> that the db/transactions and db/txn-protorevs directories were removed in
>>> the hotcopy destination copy. When doing a complete replacement of the
>>> repository with the hotcopy copy, I kept getting errors that some *.txn
>>> files couldn't be created until I manually created the 2 directories that
>>> were missing.
>>> Is this issue known? Or is this issue caused by something else?
>> If you used the "-archive-type=zip" switch when you did a hot-backup.py
>> then, yes it is a known issue.
>> It was first reported in the users group in May
>> see the thread starting at:
>> http://svn.haxx.se/users/archive-2008-05/0171.shtml
>> It turns out that the python script for (zip archive files only) doesn't
>> handle archiving empty directories.
>> I created a 1 line patch and posted it to the dev list
>> See:
>> http://svn.haxx.se/dev/archive-2008-05/0473.shtml
>> You should be able to apply that patch locally (or use a different archive
>> type) to get around the problem.
>> I guess the patch never got applied by anyone and I don't have committers
>> rights.

I'm hereby motivated, but I'm afraid I don't understand the fix. Copying it
from the mail referenced above and commenting:


* tools/backup/hot-backup.py: Fix an issue with using the
--archive-type=zip option whereby any empty repository
directories were not being zipped up. This could cause errors when using
the backups to restore a repository.

Please follow log message and all the other guidelines in

For once there's the indenting, then your explanation does not actually say
anything about the change you made, only what effect it intends to have.
"Fix an issue..." should go above, the actual function name and change in
the file listing. You'll find ample examples in the Hacking Guide (the link

Index: hot-backup.py.in
--- hot-backup.py.in (revision 31118)
+++ hot-backup.py.in (working copy)
@@ -301,7 +301,7 @@
       def add_to_zip(baton, dirname, names):
         zp = baton[0]
         root = os.path.join(baton[1], '')
+ zp.writestr(zipfile.ZipInfo(dirname[len(root):]+"/"),"")
         for file in names:
           path = os.path.join(dirname, file)
           if os.path.isfile(path):

This indenting seems wrong. Please don't use tabs.

Furthermore, please create diffs against the root of your working copy (i.e.
from trunk/), so that the full path to the modified file is listed (here
"tools/backup/hot-backup.py.in" instead of "hot-backup.py.in").

Well, I'd have fixed things myself and committed it if I understood the
patch. I don't, so I suggest you make the effort to fix the log message to
briefly explain the actual change, and make a new diff against trunk.

Thanks for your fix, though.

Neels Hofmeyr -- elego Software Solutions GmbH
Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23458696  mobile: +49 177 2345869  fax: +49 30 23458695
http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelsreg: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194

Received on 2008-10-09 08:05:19 CEST

This is an archived mail posted to the Subversion Dev mailing list.