diff --git a/hgext/transplant.py b/hgext/transplant.py --- a/hgext/transplant.py +++ b/hgext/transplant.py @@ -346,6 +346,8 @@ class transplanter(object): 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 @@ class transplanter(object): 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): diff --git a/tests/test-transplant.t b/tests/test-transplant.t --- a/tests/test-transplant.t +++ b/tests/test-transplant.t @@ -363,6 +363,19 @@ test environment passed to filter 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)