about summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cgit.c14
-rw-r--r--cgit.h2
-rw-r--r--cgitrc.5.txt12
-rw-r--r--cmd.c3
-rw-r--r--shared.c1
-rw-r--r--ui-log.c10
-rw-r--r--ui-log.h2
-rw-r--r--ui-summary.c2
8 files changed, 40 insertions, 6 deletions
diff --git a/cgit.c b/cgit.c
index 35f0da1..a97ed69 100644
--- a/cgit.c
+++ b/cgit.c
@@ -84,7 +84,12 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)
 		repo->enable_remote_branches = atoi(value);
 	else if (!strcmp(name, "enable-subject-links"))
 		repo->enable_subject_links = atoi(value);
-	else if (!strcmp(name, "max-stats"))
+	else if (!strcmp(name, "commit-sort")) {
+		if (!strcmp(value, "date"))
+			repo->commit_sort = 1;
+		if (!strcmp(value, "topo"))
+			repo->commit_sort = 2;
+	} else if (!strcmp(name, "max-stats"))
 		repo->max_stats = cgit_find_stats_period(value, NULL);
 	else if (!strcmp(name, "module-link"))
 		repo->module_link= xstrdup(value);
@@ -261,7 +266,12 @@ void config_cb(const char *name, const char *value)
 		ctx.cfg.clone_url = xstrdup(value);
 	else if (!strcmp(name, "local-time"))
 		ctx.cfg.local_time = atoi(value);
-	else if (!prefixcmp(name, "mimetype."))
+	else if (!strcmp(name, "commit-sort")) {
+		if (!strcmp(value, "date"))
+			ctx.cfg.commit_sort = 1;
+		if (!strcmp(value, "topo"))
+			ctx.cfg.commit_sort = 2;
+	} else if (!prefixcmp(name, "mimetype."))
 		add_mimetype(name + 9, value);
 	else if (!strcmp(name, "include"))
 		parse_configfile(expand_macros(value), config_cb);
diff --git a/cgit.h b/cgit.h
index becf776..7a99135 100644
--- a/cgit.h
+++ b/cgit.h
@@ -84,6 +84,7 @@ struct cgit_repo {
 	int enable_remote_branches;
 	int enable_subject_links;
 	int max_stats;
+	int commit_sort;
 	time_t mtime;
 	struct cgit_filter *about_filter;
 	struct cgit_filter *commit_filter;
@@ -231,6 +232,7 @@ struct cgit_config {
 	int summary_log;
 	int summary_tags;
 	int ssdiff;
+	int commit_sort;
 	struct string_list mimetypes;
 	struct cgit_filter *about_filter;
 	struct cgit_filter *commit_filter;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 78bb9fc..7d01fcd 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -192,6 +192,12 @@ local-time::
 	Flag which, if set to "1", makes cgit print commit and tag times in the
 	servers timezone. Default value: "0".
 
+commit-sort::
+	Flag which, when set to "date", enables strict date ordering in the
+	commit log, and when set to "topo" enables strict topological
+	ordering. If unset, the default ordering of "git log" is used. Default
+	value: unset.
+
 logo::
 	Url which specifies the source of an image which will be used as a logo
 	on all cgit pages. Default value: "/cgit.png".
@@ -435,6 +441,12 @@ repo.enable-subject-links::
 	A flag which can be used to override the global setting
 	`enable-subject-links'. Default value: none.
 
+repo.commit-sort::
+	Flag which, when set to "date", enables strict date ordering in the
+	commit log, and when set to "topo" enables strict topological
+	ordering. If unset, the default ordering of "git log" is used. Default
+	value: unset.
+
 repo.logo::
 	Url which specifies the source of an image which will be used as a logo
 	on this repo's pages. Default value: global logo.
diff --git a/cmd.c b/cmd.c
index 5a3d157..899e913 100644
--- a/cmd.c
+++ b/cmd.c
@@ -68,7 +68,8 @@ static void log_fn(struct cgit_context *ctx)
 {
 	cgit_print_log(ctx->qry.sha1, ctx->qry.ofs, ctx->cfg.max_commit_count,
 		       ctx->qry.grep, ctx->qry.search, ctx->qry.path, 1,
-		       ctx->repo->enable_commit_graph);
+		       ctx->repo->enable_commit_graph,
+		       ctx->repo->commit_sort);
 }
 
 static void ls_cache_fn(struct cgit_context *ctx)
diff --git a/shared.c b/shared.c
index 3e20937..8e5ae48 100644
--- a/shared.c
+++ b/shared.c
@@ -63,6 +63,7 @@ struct cgit_repo *cgit_add_repo(const char *url)
 	ret->enable_remote_branches = ctx.cfg.enable_remote_branches;
 	ret->enable_subject_links = ctx.cfg.enable_subject_links;
 	ret->max_stats = ctx.cfg.max_stats;
+	ret->commit_sort = ctx.cfg.commit_sort;
 	ret->module_link = ctx.cfg.module_link;
 	ret->readme = ctx.cfg.readme;
 	ret->mtime = -1;
diff --git a/ui-log.c b/ui-log.c
index 6b12ca2..2f41602 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -278,7 +278,7 @@ static char *next_token(char **src)
 }
 
 void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern,
-		    char *path, int pager, int commit_graph)
+		    char *path, int pager, int commit_graph, int commit_sort)
 {
 	struct rev_info rev;
 	struct commit *commit;
@@ -327,6 +327,14 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
 					COLUMN_COLORS_HTML_MAX);
 	}
 
+	if (commit_sort == 1) {
+		static const char *date_order_arg = "--date-order";
+		vector_push(&vec, &date_order_arg, 0);
+	} else if (commit_sort == 2) {
+		static const char *topo_order_arg = "--topo-order";
+		vector_push(&vec, &topo_order_arg, 0);
+	}
+
 	if (path) {
 		arg = "--";
 		vector_push(&vec, &arg, 0);
diff --git a/ui-log.h b/ui-log.h
index d0cb779..d324c92 100644
--- a/ui-log.h
+++ b/ui-log.h
@@ -3,7 +3,7 @@
 
 extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep,
 			   char *pattern, char *path, int pager,
-			   int commit_graph);
+			   int commit_graph, int commit_sort);
 extern void show_commit_decorations(struct commit *commit);
 
 #endif /* UI_LOG_H */
diff --git a/ui-summary.c b/ui-summary.c
index 227ed27..b4fdd57 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -59,7 +59,7 @@ void cgit_print_summary()
 	if (ctx.cfg.summary_log > 0) {
 		html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");
 		cgit_print_log(ctx.qry.head, 0, ctx.cfg.summary_log, NULL,
-			       NULL, NULL, 0, 0);
+			       NULL, NULL, 0, 0, 0);
 	}
 	if (ctx.repo->clone_url)
 		print_urls(expand_macros(ctx.repo->clone_url), NULL);
ef='/catgirl/commit/ui.c?id=573bc855a68766f38de2acb48bebc9d0adbf0a1f&follow=1'>Simplify cursor positioning in inputJune McEnroe Do some extra work by adding the portion before the cursor to the input window twice, but simplify the interaction with the split point. This fixes the awkward behaviour when moving the cursor across colour codes where the code would be partially interpreted up to the cursor. 2022-02-18Fix M-f orderingJune McEnroe 2022-02-12Move sandman build to scripts/MakefileJune McEnroe 2022-02-12Use compat_readpassphrase.c on LinuxJune McEnroe 2022-02-12Copy RPP defines from oconfigureJune McEnroe