From patchwork Wed Mar 22 19:13:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: convert: Fix the handling of empty changlist descriptions in P4 From: David Soria Parra X-Patchwork-Id: 19596 Message-Id: To: Date: Wed, 22 Mar 2017 14:13:27 -0500 # HG changeset patch # User David Soria Parra # Date 1490209978 18000 # Wed Mar 22 14:12:58 2017 -0500 # Node ID ff24a4168c2f05fd367b0b126e52559ef89af77f # Parent 102f291807c92864a2231e5e925d6cd64783bb59 convert: Fix the handling of empty changlist descriptions in P4 Empty changelist descriptions are valid in Perforce. If we encounter one of them we are currently running into an IndexError. In case of empty commit messages set the commit message to **empty changelist description**, which follows Perforce terminology. diff --git a/hgext/convert/p4.py b/hgext/convert/p4.py --- a/hgext/convert/p4.py +++ b/hgext/convert/p4.py @@ -161,7 +161,12 @@ d = self._fetch_revision(change) c = self._construct_commit(d, parents) - shortdesc = c.desc.splitlines(True)[0].rstrip('\r\n') + descarr = c.desc.splitlines(True) + if len(descarr) > 0: + shortdesc = descarr[0].rstrip('\r\n') + else: + shortdesc = '**empty changelist description**' + t = '%s %s' % (c.rev, repr(shortdesc)[1:-1]) ui.status(util.ellipsis(t, 80) + '\n') diff --git a/tests/test-convert-p4.t b/tests/test-convert-p4.t --- a/tests/test-convert-p4.t +++ b/tests/test-convert-p4.t @@ -141,5 +141,23 @@ rev=1 desc="change a" tags="" files="a" rev=0 desc="initial" tags="" files="a b/c" +empty commit message + $ p4 edit a + //depot/test-mercurial-import/a#3 - opened for edit + $ echo aaaaa >> a + $ p4 submit -d "" + Submitting change 6. + Locking 1 files ... + edit //depot/test-mercurial-import/a#4 + Change 6 submitted. + $ hg convert -s p4 $DEPOTPATH dst + scanning source... + reading p4 views + collecting p4 changelists + 6 **empty changelist description** + sorting... + converting... + 0 + exit trap: stopping the p4 server