[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