Commits

Luke Plant committed 7e50311

transplant: fix crash if filter script munges log file

This fixes an UnboundLocalError crash if the filter script removes the
'User' or 'Date' lines from the log file.

  • Participants
  • Parent commits 307c726

Comments (0)

Files changed (2)

File hgext/transplant.py

         message = []
         node = revlog.nullid
         inmsg = False
+        user = None
+        date = None
         for line in fp.read().splitlines():
             if inmsg:
                 message.append(line)
             elif not line.startswith('# '):
                 inmsg = True
                 message.append(line)
+        if None in (user, date):
+            raise util.Abort(_("filter produced garbled log file"))
         return (node, user, date, '\n'.join(message), parents)
 
     def log(self, user, date, message, p1, p2, merge=False):

File tests/test-transplant.t

   Transplant from rev 17ab29e464c6ca53e329470efe2a9918ac617a6f
   $ cd ..
 
+test transplant with filter handles invalid changelog
+
+  $ hg init filter-invalid-log
+  $ cd filter-invalid-log
+  $ cat <<'EOF' >test-filter-invalid-log
+  > #!/bin/sh
+  > echo "" > $1
+  > EOF
+  $ chmod +x test-filter-invalid-log
+  $ hg transplant -s ../t --filter ./test-filter-invalid-log 0
+  filtering * (glob)
+  abort: filter failed
+  [255]
 
 test with a win32ext like setup (differing EOLs)