Mercurial > hg > mercurial-source
changeset 13789:7e5031180c0f
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.
author | Luke Plant <L.Plant.98@cantab.net> |
---|---|
date | Mon, 28 Mar 2011 21:17:32 +0100 |
parents | 307c72686eb0 |
children | c0ed76b5056d |
files | hgext/transplant.py tests/test-transplant.t |
diffstat | 2 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/transplant.py +++ b/hgext/transplant.py @@ -346,6 +346,8 @@ message = [] node = revlog.nullid inmsg = False + user = None + date = None for line in fp.read().splitlines(): if inmsg: message.append(line) @@ -360,6 +362,8 @@ 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):
--- a/tests/test-transplant.t +++ b/tests/test-transplant.t @@ -363,6 +363,19 @@ 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)