threads / patch / 17065

patchGet format-patch to show first commit after root commit

Subject: [PATCH] Get format-patch to show first commit after root commit

## tl;dr

2 messages between Jan 9, 2009 and Jan 9, 2009. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Nathan W. Panike· Jan 9, 2009, 19:35 UTC · lore
Currently, the command
git format-patch -1 e83c5163316f89bfbde

in the git repository creates an empty file. Instead, one is forced to do

git format-patch -1 --root e83c5163316f89bfbde
This seems arbitrary.  This patch fixes this case, so that
git format-patch -1 e83c5163316f89bfbde
will produce an actual patch.
---
 builtin-log.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Show changes to builtin-log.c +2 −0
diff --git a/builtin-log.c b/builtin-log.c
index 4a02ee9..5e7b61f 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -977,6 +977,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 		list[nr - 1] = commit;
 	}
 	total = nr;
+	if (total == 1 && !list[0]->parents)
+		rev.show_root_diff=1;
 	if (!keep_subject && auto_number && total > 1)
 		numbered = 1;
 	if (numbered)
-- 
1.6.1.76.gc123b.dirty
Alexander Potashev· Jan 9, 2009, 20:29 UTC · re: Nathan W. Panike · lore

Re: [PATCH] Get format-patch to show first commit after root commit

Hello!

I experienced this problem today while preparing a simple patch for reply in "[PATCH 2/2] Use is_pseudo_dir_name everywhere" thread. I used a workaround: add a file, commit, remove it, commit, add it once again, commit and after all format-patch.

On 13:35 Fri 09 Jan     , Nathan W. Panike wrote:
Show 12 quoted lines
> Currently, the command
> 
> git format-patch -1 e83c5163316f89bfbde
> 
> in the git repository creates an empty file.  Instead, one is
> forced to do
> 
> git format-patch -1 --root e83c5163316f89bfbde
> 
> This seems arbitrary.  This patch fixes this case, so that
> 
> git format-patch -1 e83c5163316f89bfbde

Your patch doesn't solve the problem if there are more than one commit (say, 2 commits) and you run 'git format-patch -2'. Even with your patch format-patch writes an empty patch file corresponding to the root commit (actually, it creates 2 patches, but the first is empty).

Please, correct me if I'm wrong.
Show 21 quoted lines
> 
> will produce an actual patch.
> ---
>  builtin-log.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/builtin-log.c b/builtin-log.c
> index 4a02ee9..5e7b61f 100644
> --- a/builtin-log.c
> +++ b/builtin-log.c
> @@ -977,6 +977,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
>  		list[nr - 1] = commit;
>  	}
>  	total = nr;
> +	if (total == 1 && !list[0]->parents)
> +		rev.show_root_diff=1;
>  	if (!keep_subject && auto_number && total > 1)
>  		numbered = 1;
>  	if (numbered)
> -- 
> 1.6.1.76.gc123b.dirty

← back to recent threads