[PATCH] fastexport: fix data handling
Raphaël Gomès
raphael.gomes at octobus.net
Tue Mar 7 09:51:58 UTC 2023
Just so it doesn't look like we've ignored this, this series has also
been sent to Heptapod, which is the preferred method of contribution.
Raphaël
On 3/2/23 21:13, Felipe Contreras wrote:
> Commit messages are supposed to end on a newline, and blobs should not
> be modified at all.
>
> All data should be written as-is.
> ---
> hgext/fastexport.py | 8 ++---
> tests/test-fastexport.t | 73 +++++++++--------------------------------
> 2 files changed, 19 insertions(+), 62 deletions(-)
>
> diff --git a/hgext/fastexport.py b/hgext/fastexport.py
> index 738d75259a..a730b2ca7b 100644
> --- a/hgext/fastexport.py
> +++ b/hgext/fastexport.py
> @@ -69,11 +69,9 @@ def convert_to_git_ref(branch):
> return b"refs/heads/" + branch
>
>
> -def write_data(buf, data, skip_newline):
> +def write_data(buf, data):
> buf.append(b"data %d\n" % len(data))
> buf.append(data)
> - if not skip_newline or data[-1:] != b"\n":
> - buf.append(b"\n")
>
>
> def export_commit(ui, repo, rev, marks, authormap):
> @@ -103,7 +101,7 @@ def export_commit(ui, repo, rev, marks, authormap):
> marks[filerev] = mark
> data = filectx.data()
> buf = [b"blob\n", b"mark :%d\n" % mark]
> - write_data(buf, data, False)
> + write_data(buf, data)
> ui.write(*buf, keepprogressbar=True)
> del buf
>
> @@ -122,7 +120,7 @@ def export_commit(ui, repo, rev, marks, authormap):
> convert_to_git_date(ctx.date()),
> ),
> ]
> - write_data(buf, ctx.description(), True)
> + write_data(buf, ctx.description() + b"\n")
> if parents:
> buf.append(b"from :%d\n" % marks[parents[0].hex()])
> if len(parents) == 2:
> diff --git a/tests/test-fastexport.t b/tests/test-fastexport.t
> index 10af6465ed..b6218e651f 100644
> --- a/tests/test-fastexport.t
> +++ b/tests/test-fastexport.t
> @@ -142,16 +142,14 @@
> 21
> 22
> 23
> -
> blob
> mark :2
> data 3
> r0
> -
> commit refs/heads/default
> mark :3
> committer "debugbuilddag" <debugbuilddag> 0 +0000
> - data 2
> + data 3
> r0
> M 644 :1 mf
> M 644 :2 nf0
> @@ -184,21 +182,18 @@
> 21
> 22
> 23
> -
> blob
> mark :5
> data 3
> r1
> -
> blob
> mark :6
> data 3
> r1
> -
> commit refs/heads/default
> mark :7
> committer "debugbuilddag" <debugbuilddag> 1 +0000
> - data 2
> + data 3
> r1
> from :3
> M 644 :4 mf
> @@ -232,21 +227,18 @@
> 21
> 22
> 23
> -
> blob
> mark :9
> data 3
> r2
> -
> blob
> mark :10
> data 3
> r2
> -
> commit refs/heads/name1
> mark :11
> committer "debugbuilddag" <debugbuilddag> 2 +0000
> - data 2
> + data 3
> r2
> from :7
> M 644 :8 mf
> @@ -280,21 +272,18 @@
> 21
> 22
> 23
> -
> blob
> mark :13
> data 3
> r3
> -
> blob
> mark :14
> data 3
> r3
> -
> commit refs/heads/name1
> mark :15
> committer "debugbuilddag" <debugbuilddag> 3 +0000
> - data 2
> + data 3
> r3
> from :11
> M 644 :12 mf
> @@ -328,21 +317,18 @@
> 21
> 22
> 23
> -
> blob
> mark :17
> data 3
> r4
> -
> blob
> mark :18
> data 3
> r4
> -
> commit refs/heads/name1
> mark :19
> committer "debugbuilddag" <debugbuilddag> 4 +0000
> - data 2
> + data 3
> r4
> from :15
> M 644 :16 mf
> @@ -376,21 +362,18 @@
> 21
> 22
> 23
> -
> blob
> mark :21
> data 3
> r5
> -
> blob
> mark :22
> data 3
> r5
> -
> commit refs/heads/name2
> mark :23
> committer "debugbuilddag" <debugbuilddag> 5 +0000
> - data 2
> + data 3
> r5
> from :7
> M 644 :20 mf
> @@ -424,21 +407,18 @@
> 21
> 22
> 23
> -
> blob
> mark :25
> data 3
> r6
> -
> blob
> mark :26
> data 3
> r6
> -
> commit refs/heads/name2
> mark :27
> committer "debugbuilddag" <debugbuilddag> 6 +0000
> - data 2
> + data 3
> r6
> from :23
> M 644 :24 mf
> @@ -472,21 +452,18 @@
> 21
> 22
> 23
> -
> blob
> mark :29
> data 3
> r7
> -
> blob
> mark :30
> data 3
> r7
> -
> commit refs/heads/name2
> mark :31
> committer "debugbuilddag" <debugbuilddag> 7 +0000
> - data 2
> + data 3
> r7
> from :27
> M 644 :28 mf
> @@ -520,21 +497,18 @@
> 21
> 22
> 23
> -
> blob
> mark :33
> data 3
> r8
> -
> blob
> mark :34
> data 3
> r8
> -
> commit refs/heads/name2
> mark :35
> committer "debugbuilddag" <debugbuilddag> 8 +0000
> - data 2
> + data 3
> r8
> from :31
> M 644 :32 mf
> @@ -568,21 +542,18 @@
> 21
> 22
> 23
> -
> blob
> mark :37
> data 3
> r9
> -
> blob
> mark :38
> data 3
> r9
> -
> commit refs/heads/both
> mark :39
> committer "debugbuilddag" <debugbuilddag> 9 +0000
> - data 2
> + data 3
> r9
> from :35
> merge :19
> @@ -620,21 +591,18 @@
> 21
> 22
> 23
> -
> blob
> mark :41
> data 4
> r10
> -
> blob
> mark :42
> data 4
> r10
> -
> commit refs/heads/both
> mark :43
> committer "debugbuilddag" <debugbuilddag> 10 +0000
> - data 3
> + data 4
> r10
> from :39
> M 644 :40 mf
> @@ -668,21 +636,18 @@
> 21
> 22 r11
> 23
> -
> blob
> mark :45
> data 4
> r11
> -
> blob
> mark :46
> data 4
> r11
> -
> commit refs/heads/both
> mark :47
> committer "debugbuilddag" <debugbuilddag> 11 +0000
> - data 3
> + data 4
> r11
> from :43
> M 644 :44 mf
> @@ -692,7 +657,7 @@
> commit refs/heads/both
> mark :48
> committer "debugbuilddag" <debugbuilddag> 12 +0230
> - data 3
> + data 4
> r12
> from :43
> D nf10
> @@ -700,7 +665,7 @@
> commit refs/heads/both
> mark :49
> committer "test" <test> 13 +0000
> - data 13
> + data 14
> debugbuilddag
> from :47
> merge :48
> @@ -785,16 +750,14 @@
> 21
> 22
> 23
> -
> blob
> mark :2
> data 3
> r0
> -
> commit refs/heads/default
> mark :3
> committer "debugbuilddag" <debugbuilddag> 0 +0000
> - data 2
> + data 3
> r0
> M 644 :1 mf
> M 644 :2 nf0
> @@ -832,21 +795,18 @@
> 21
> 22
> 23
> -
> blob
> mark :5
> data 3
> r1
> -
> blob
> mark :6
> data 3
> r1
> -
> commit refs/heads/default
> mark :7
> committer "debugbuilddag" <debugbuilddag> 1 +0000
> - data 2
> + data 3
> r1
> from :3
> M 644 :4 mf
> @@ -860,6 +820,5 @@
> mark :50
> data 4
> foo
> -
> abort: Unable to parse user into person and email for revision 65a3f69b9b519de73d755472c1ab05990ab8a7f7
> [255]
More information about the Mercurial-devel
mailing list