threads / patch / 13658

patchbuiltin-fast-export: Only output a single parent per line

Subject: [PATCH] builtin-fast-export: Only output a single parent per line

## tl;dr

6 messages between May 24, 2008 and May 26, 2008. Diffs are folded; open one to read it.

replies: 5people: 3as markdown or json

Pieter de Bie· May 24, 2008, 23:21 UTC · lore

According to the git-fast-import man-page, you can only put a single committish per merge: line, like this:

  merge :10
  merge :11
However, git-fast-export puts all parents on a single line, like this:
  merge :10 :11

This may be fine with git-fast-import, but other importers based on it, like bzr-fast-import, can't handle this.

This changes fast-export to also output a single parent per line.
Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
---
I'm not sure why this was done, but it messed up my import :)
 builtin-fast-export.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)
Show changes to builtin-fast-export.c +1 −3
diff --git a/builtin-fast-export.c b/builtin-fast-export.c
index e1c5630..34acdf9 100755
--- a/builtin-fast-export.c
+++ b/builtin-fast-export.c
@@ -204,10 +204,8 @@ static void handle_commit(struct commit *commit, struct rev_info *rev)
 			continue;
 		if (i == 0)
 			printf("from :%d\n", mark);
-		else if (i == 1)
-			printf("merge :%d", mark);
 		else
-			printf(" :%d", mark);
+			printf("merge :%d\n", mark);
 		i++;
 	}
 	if (i > 1)
-- 
1.5.5.1.541.g51dc4.dirty
Junio C Hamano· May 25, 2008, 01:38 UTC · re: Pieter de Bie · lore

Re: [PATCH] builtin-fast-export: Only output a single parent per line

Pieter de Bie <pdebie@ai.rug.nl> writes:
Show 11 quoted lines
> According to the git-fast-import man-page, you can only put a single
> committish per merge: line, like this:
>
>   merge :10
>   merge :11
>
> However, git-fast-export puts all parents on a single line, like this:
>
>   merge :10 :11
>
> This may be fine with git-fast-import,...

Is it fine for even git-fast-import? fast-import.c: parse_merge() seems to suggest that it also wants one parent per "merge " line.

Shawn O. Pearce· May 26, 2008, 01:49 UTC · re: Junio C Hamano · lore

Re: [PATCH] builtin-fast-export: Only output a single parent per line

Junio C Hamano <gitster@pobox.com> wrote:
Show 16 quoted lines
> Pieter de Bie <pdebie@ai.rug.nl> writes:
> 
> > According to the git-fast-import man-page, you can only put a single
> > committish per merge: line, like this:
> >
> >   merge :10
> >   merge :11
> >
> > However, git-fast-export puts all parents on a single line, like this:
> >
> >   merge :10 :11
> >
> > This may be fine with git-fast-import,...
> 
> Is it fine for even git-fast-import?  fast-import.c: parse_merge() seems
> to suggest that it also wants one parent per "merge " line.

fast-import wants the same as bzr-fast-import; one parent per merge line. If git-fast-import was doing anything with multiple per line it was probably dropping everything after the first. :-(

This was a bug in fast-export; I'm glad Pieter has fixed it.
-- 
Shawn.
Junio C Hamano· May 26, 2008, 05:19 UTC · re: Shawn O. Pearce · lore

Re: [PATCH] builtin-fast-export: Only output a single parent per line

"Shawn O. Pearce" <spearce@spearce.org> writes:
Show 10 quoted lines
> Junio C Hamano <gitster@pobox.com> wrote:
> ...
>> Is it fine for even git-fast-import?  fast-import.c: parse_merge() seems
>> to suggest that it also wants one parent per "merge " line.
>
> fast-import wants the same as bzr-fast-import; one parent per
> merge line.  If git-fast-import was doing anything with multiple
> per line it was probably dropping everything after the first.  :-(
>
> This was a bug in fast-export; I'm glad Pieter has fixed it.
Unfortunately, t9301 does not pass with the "fix".
Junio C Hamano· May 26, 2008, 05:24 UTC · re: Junio C Hamano · lore

Re: [PATCH] builtin-fast-export: Only output a single parent per line

Junio C Hamano <gitster@pobox.com> writes:
Show 14 quoted lines
> "Shawn O. Pearce" <spearce@spearce.org> writes:
>
>> Junio C Hamano <gitster@pobox.com> wrote:
>> ...
>>> Is it fine for even git-fast-import?  fast-import.c: parse_merge() seems
>>> to suggest that it also wants one parent per "merge " line.
>>
>> fast-import wants the same as bzr-fast-import; one parent per
>> merge line.  If git-fast-import was doing anything with multiple
>> per line it was probably dropping everything after the first.  :-(
>>
>> This was a bug in fast-export; I'm glad Pieter has fixed it.
>
> Unfortunately, t9301 does not pass with the "fix".
Perhaps, this is needed on top?
 builtin-fast-export.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)
Show changes to builtin-fast-export.c +0 −2
diff --git a/builtin-fast-export.c b/builtin-fast-export.c
index 4d28cf7..4bf5b58 100755
--- a/builtin-fast-export.c
+++ b/builtin-fast-export.c
@@ -209,8 +209,6 @@ static void handle_commit(struct commit *commit, struct rev_info *rev)
 			printf("merge :%d\n", mark);
 		i++;
 	}
-	if (i > 1)
-		printf("\n");
 
 	log_tree_diff_flush(rev);
 	rev->diffopt.output_format = saved_output_format;
Shawn O. Pearce· May 26, 2008, 05:30 UTC · re: Junio C Hamano · lore

Re: [PATCH] builtin-fast-export: Only output a single parent per line

Junio C Hamano <gitster@pobox.com> wrote:
Show 20 quoted lines
> > Unfortunately, t9301 does not pass with the "fix".
> 
> Perhaps, this is needed on top?
> 
>  builtin-fast-export.c |    2 --
>  1 files changed, 0 insertions(+), 2 deletions(-)
> 
> diff --git a/builtin-fast-export.c b/builtin-fast-export.c
> index 4d28cf7..4bf5b58 100755
> --- a/builtin-fast-export.c
> +++ b/builtin-fast-export.c
> @@ -209,8 +209,6 @@ static void handle_commit(struct commit *commit, struct rev_info *rev)
>  			printf("merge :%d\n", mark);
>  		i++;
>  	}
> -	if (i > 1)
> -		printf("\n");
>  
>  	log_tree_diff_flush(rev);
>  	rev->diffopt.output_format = saved_output_format;

Yea, that looks right. The LF shouldn't follow the last merge command.

-- 
Shawn.

← back to recent threads