Re: git-format-patch possible regressions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Thu, 25 May 2006, Junio C Hamano wrote:

> "Marco Costalba" <mcostalba@xxxxxxxxx> writes:
> 
> > 2) Unhandled ranges list
> >
> > The second one is not so easy.
> 
> This is a real regression;

I was not aware of the possibility to specify several ranges, mostly 
because I did not use it that way.

However, I think it is worth breaking this in that particular case, since 
the range handling has become unified with the framework in revision.[ch]

> As an easy alternative, we could give --start-number=<n> to
> format-patch so that you can do the iteration yourself instead
> of having format-patch to iterate over the list.

Something like this?

---
[PATCH] format-patch: support --start-number=<n> (and --start-number <n>)

This option implicitely sets numbered mode and starts the numbering with <n>.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx>
---
 builtin-log.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/builtin-log.c b/builtin-log.c
index c8feb0f..4e3388b 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -148,6 +148,7 @@ int cmd_format_patch(int argc, const cha
 	int nr = 0, total, i, j;
 	int use_stdout = 0;
 	int numbered = 0;
+	int start_number = -1;
 	int keep_subject = 0;
 
 	init_revisions(&rev);
@@ -171,7 +172,14 @@ int cmd_format_patch(int argc, const cha
 		else if (!strcmp(argv[i], "-n") ||
 				!strcmp(argv[i], "--numbered"))
 			numbered = 1;
-		else if (!strcmp(argv[i], "-k") ||
+		else if (!strncmp(argv[i], "--start-number=", 15))
+			start_number = strtol(argv[i] + 15, NULL, 10);
+		else if (!strcmp(argv[i], "--start-number")) {
+			i++;
+			if (i == argc)
+				die("Need a number for --start-number");
+			start_number = strtol(argv[i], NULL, 10);
+		} else if (!strcmp(argv[i], "-k") ||
 				!strcmp(argv[i], "--keep-subject")) {
 			keep_subject = 1;
 			rev.total = -1;
@@ -193,6 +201,11 @@ int cmd_format_patch(int argc, const cha
 	}
 	argc = j;
 
+	if (start_number >= 0)
+		numbered = 1;
+	else if (numbered)
+		start_number = 1;
+
 	if (numbered && keep_subject < 0)
 		die ("-n and -k are mutually exclusive.");
 
@@ -219,11 +232,11 @@ int cmd_format_patch(int argc, const cha
 	}
 	total = nr;
 	if (numbered)
-		rev.total = total;
+		rev.total = total + start_number - 1;
 	while (0 <= --nr) {
 		int shown;
 		commit = list[nr];
-		rev.nr = total - nr;
+		rev.nr = rev.total - nr;
 		if (!use_stdout)
 			reopen_stdout(commit, rev.nr, keep_subject);
 		shown = log_tree_commit(&rev, commit);
-- 
1.3.3.gd515

-
: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]