ctucx.git: stagit

ctucx' stagit fork

commit 67e5e6c5e74117b478c150480c282a03543fe887
parent 5f78d89d591ad26b902947288625b90528954372
Author: Quentin Rameau <quinq@fifth.space>
Date: Tue, 16 Nov 2021 18:17:45 +0100

Print the number of remaining commits
1 file changed, 16 insertions(+), 11 deletions(-)
M
stagit.c
|
27
++++++++++++++++-----------
diff --git a/stagit.c b/stagit.c
@@ -71,7 +71,7 @@ static char *licensefiles[] = { "HEAD:LICENSE", "HEAD:LICENSE.md", "HEAD:COPYING
 static char *license;
 static char *readmefiles[] = { "HEAD:README", "HEAD:README.md" };
 static char *readme;
-static long long nlogcommits = -1; /* < 0 indicates not used */
+static long long nlogcommits = -1; /* -1 indicates not used */
 
 /* cache */
 static git_oid lastoid;

@@ -764,6 +764,7 @@ writelog(FILE *fp, const git_oid *oid)
 	git_oid id;
 	char path[PATH_MAX], oidstr[GIT_OID_HEXSZ + 1];
 	FILE *fpfile;
+	size_t remcommits = 0;
 	int r;
 
 	git_revwalk_new(&w, repo);

@@ -783,8 +784,11 @@ writelog(FILE *fp, const git_oid *oid)
 
 		/* optimization: if there are no log lines to write and
 		   the commit file already exists: skip the diffstat */
-		if (!nlogcommits && !r)
-			continue;
+		if (!nlogcommits) {
+			remcommits++;
+			if (!r)
+				continue;
+		}
 
 		if (!(ci = commitinfo_getbyoid(&id)))
 			break;

@@ -792,15 +796,10 @@ writelog(FILE *fp, const git_oid *oid)
 		if (commitinfo_getstats(ci) == -1)
 			goto err;
 
-		if (nlogcommits < 0) {
+		if (nlogcommits != 0) {
 			writelogline(fp, ci);
-		} else if (nlogcommits > 0) {
-			writelogline(fp, ci);
-			nlogcommits--;
-			if (!nlogcommits && ci->parentoid[0])
-				fputs("<tr><td></td><td colspan=\"5\">"
-				      "More commits remaining [...]</td>"
-				      "</tr>\n", fp);
+			if (nlogcommits > 0)
+				nlogcommits--;
 		}
 
 		if (cachefile)

@@ -822,6 +821,12 @@ err:
 	}
 	git_revwalk_free(w);
 
+	if (nlogcommits == 0 && remcommits != 0) {
+		fprintf(fp, "<tr><td></td><td colspan=\"5\">"
+		        "%zu more commits remaining, fetch the repository"
+		        "</td></tr>\n", remcommits);
+	}
+
 	relpath = "";
 
 	return 0;