Modify

Opened 15 years ago

Last modified 11 years ago

#4763 new defect

Error when revision is empty (no nodes)

Reported by: Martin Scharrer Owned by: Emmanuel Blot
Priority: high Component: RevtreePlugin
Severity: critical Keywords:
Cc: Trac Release: 0.11

Description

Revtree (I used [4847]) generates a fatal warning when a revision is included which is empty, i.e. no changes at all. This kind of revisions can not be created over the normal user interface but over the svnadmin tool using dump and load. Empty revisions appear when a revision is filtered out using svndumpfilter or the perl module SVN::Dumpfilter but is still included in order to not change the revision numbers of the following revisions in the dumpfile.

The error was something like "Iteration Error ...", so I think there is a check missing if there are no nodes, i.e. nothing to iterate over. Should be easy to fix.

I declare this as 'critical' because I can't use revtree on my valid rapository as long this isn't fixed.

Thank you in advance, Martin Scharrer

Attachments (0)

Change History (4)

comment:1 Changed 15 years ago by Martin Scharrer

Ticket #4471 seems to be related. It is the same error message anyway.

comment:2 Changed 15 years ago by Emmanuel Blot

Could you attach a gzip/bzip2' ed repository dump image that reproduces the error.

I don't use dumpfilter at all.

Thanks.

comment:3 Changed 11 years ago by bewst

I believe this duplicates #9231, #4471, #5219, and #7618

comment:4 in reply to:  2 Changed 11 years ago by bewst

Replying to eblot:

Could you attach a gzip/bzip2' ed repository dump image that reproduces the error.

I could send you one (it's for the Boost libraries), but before compression it's 3G. The bzip is 168M so far and counting...

The following patch seems to suppress the error, FWIW:

  • revtree/model.py

     
    4848    @staticmethod
    4949    def get_chgset_info(tracchgset):
    5050        chgit = tracchgset.get_changes()
    51         item = chgit.next()
     51        item = ['/', TracNode.FILE, None, '/', 1]
    5252        info = {}
    5353        try:
     54            item = chgit.next()
    5455            chgit.next()
    5556        except StopIteration:
    5657            info['unique'] = True
     
    103104           nor a subdirectory should be altered in any way
    104105        """
    105106        change_gen = self.changeset.get_changes()
    106         item = change_gen.next()
     107        item = ['/', TracNode.FILE, None, '/', 1]
    107108        try:
     109            item = change_gen.next()
    108110            change_gen.next()
    109111        except StopIteration:
    110112            pass

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain Emmanuel Blot.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.