ui-log: Add "commit-sort" option for controlling commit ordering
This makes it possible to use strict commit date ordering or strict topological ordering by passing the corresponding flags to "git log". Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Этот коммит содержится в:
родитель
7a4e7c8ffb
Коммит
792f813d34
14
cgit.c
14
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);
|
||||
|
2
cgit.h
2
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;
|
||||
|
12
cgitrc.5.txt
12
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.
|
||||
|
3
cmd.c
3
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)
|
||||
|
1
shared.c
1
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;
|
||||
|
10
ui-log.c
10
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);
|
||||
|
2
ui-log.h
2
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 */
|
||||
|
@ -59,7 +59,7 @@ void cgit_print_summary()
|
||||
if (ctx.cfg.summary_log > 0) {
|
||||
html("<tr class='nohover'><td colspan='4'> </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);
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user