Mercurial > hg
changeset 43097:27c4f93d07a9
import: read X-Mercurial-Node email header to determine nodeid
This would be useful to import and obsolete patches sent using 'hg email
--plain', using evolve's --obsolete option of 'hg import'.
If email body contains Mercurial patch header ('# HG changeset patch'
block), nodeid parsed from X-Mercurial-Node header will still be
overridden by respective value found in body.
author | Denis Laxalde <denis@laxalde.org> |
---|---|
date | Sun, 06 Oct 2019 13:06:19 +0200 |
parents | 813aa8cc55d4 |
children | 9691fc764bdc |
files | mercurial/patch.py tests/test-import.t |
diffstat | 2 files changed, 47 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/patch.py Wed Oct 02 07:35:22 2019 +0900 +++ b/mercurial/patch.py Sun Oct 06 13:06:19 2019 +0200 @@ -256,6 +256,11 @@ # should try to parse msg['Date'] parents = [] + nodeid = msg[r'X-Mercurial-Node'] + if nodeid: + data[b'nodeid'] = nodeid = mail.headdecode(nodeid) + ui.debug(b'Node ID: %s\n' % nodeid) + if subject: if subject.startswith(b'[PATCH'): pend = subject.find(b']')
--- a/tests/test-import.t Wed Oct 02 07:35:22 2019 +0900 +++ b/tests/test-import.t Sun Oct 06 13:06:19 2019 +0200 @@ -237,7 +237,6 @@ [255] $ rm -r b - hg -R repo import put the clone in a subdir - having a directory named "a" used to hide a bug. @@ -396,6 +395,48 @@ summary: second change $ rm -r b +hg email --plain, should read X-Mercurial-Node header + + $ cat >> a/.hg/hgrc << EOF + > [extensions] + > patchbomb = + > [email] + > from = foo + > cc = foo + > to = bar + > EOF + $ hg --cwd a email -m ../tip-plain.mbox --plain --date '1970-1-1 0:1' tip + this patch series consists of 1 patches. + + + sending [PATCH] second change ... + + $ hg clone -r0 a b -q + $ hg --cwd b import --debug ../tip-plain.mbox + applying ../tip-plain.mbox + Node ID: 1d4bd90af0e43687763d158dfa83ff2a4b6c0c32 + Subject: second change + From: foo + Content-Type: text/plain + found patch at byte 0 + message: + second change + patching file a + committing files: + a + committing manifest + committing changelog + created de620f6fe949 + updating the branch cache + $ hg --cwd b tip + changeset: 1:de620f6fe949 + tag: tip + user: foo + date: Thu Jan 01 00:00:00 1970 +0000 + summary: second change + + $ rm -r b + subject: duplicate detection, removal of [PATCH] The '---' tests the gitsendmail handling without proper mail headers