all repos — cgit @ 1830271c5958526425f92ae2b369646b54e3c370

a hyperfast web frontend for git written in c

Change "ss" diff flag to an enum

This will allow us to introduce a new "stat only" diff mode without
needing an explosion of mutually incompatible flags.

The old "ss" query parameter is still accepted in order to avoid
breaking saved links, but we no longer generate any URIs using it;
instead the new "dt" (diff type) parameter is used.

Signed-off-by: John Keeping <john@keeping.me.uk>
John Keeping john@keeping.me.uk
Sun, 05 Oct 2014 10:59:04 +0100
commit

1830271c5958526425f92ae2b369646b54e3c370

parent

03f537f1a134c8578ae4c16055596539fbbcc220

4 files changed, 24 insertions(+), 14 deletions(-)

jump to
M cgit.ccgit.c

@@ -237,7 +237,7 @@ ctx.cfg.summary_branches = atoi(value);

else if (!strcmp(name, "summary-tags")) ctx.cfg.summary_tags = atoi(value); else if (!strcmp(name, "side-by-side-diffs")) - ctx.cfg.ssdiff = atoi(value); + ctx.cfg.difftype = atoi(value) ? DIFF_SSDIFF : DIFF_UNIFIED; else if (!strcmp(name, "agefile")) ctx.cfg.agefile = xstrdup(value); else if (!strcmp(name, "mimetype-file"))

@@ -312,9 +312,13 @@ } else if (!strcmp(name, "showmsg")) {

ctx.qry.showmsg = atoi(value); } else if (!strcmp(name, "period")) { ctx.qry.period = xstrdup(value); + } else if (!strcmp(name, "dt")) { + ctx.qry.difftype = atoi(value); + ctx.qry.has_difftype = 1; } else if (!strcmp(name, "ss")) { - ctx.qry.ssdiff = atoi(value); - ctx.qry.has_ssdiff = 1; + /* No longer generated, but there may be links out there. */ + ctx.qry.difftype = atoi(value) ? DIFF_SSDIFF : DIFF_UNIFIED; + ctx.qry.has_difftype = 1; } else if (!strcmp(name, "all")) { ctx.qry.show_all = atoi(value); } else if (!strcmp(name, "context")) {

@@ -372,7 +376,7 @@ ctx.cfg.summary_branches = 10;

ctx.cfg.summary_log = 10; ctx.cfg.summary_tags = 10; ctx.cfg.max_atom_items = 10; - ctx.cfg.ssdiff = 0; + ctx.cfg.difftype = DIFF_UNIFIED; ctx.env.cgit_config = getenv("CGIT_CONFIG"); ctx.env.http_host = getenv("HTTP_HOST"); ctx.env.https = getenv("HTTPS");
M cgit.hcgit.h

@@ -53,6 +53,10 @@ typedef void (*filepair_fn)(struct diff_filepair *pair);

typedef void (*linediff_fn)(char *line, int len); typedef enum { + DIFF_UNIFIED, DIFF_SSDIFF +} diff_type; + +typedef enum { ABOUT, COMMIT, SOURCE, EMAIL, AUTH } filter_type;

@@ -150,7 +154,7 @@

struct cgit_query { int has_symref; int has_sha1; - int has_ssdiff; + int has_difftype; char *raw; char *repo; char *page;

@@ -168,7 +172,7 @@ int ofs;

int nohead; char *sort; int showmsg; - int ssdiff; + diff_type difftype; int show_all; int context; int ignorews;

@@ -245,7 +249,7 @@ int section_sort;

int summary_branches; int summary_log; int summary_tags; - int ssdiff; + diff_type difftype; int branch_sort; int commit_sort; struct string_list mimetypes;
M ui-diff.cui-diff.c

@@ -345,8 +345,8 @@ html("</td>");

html("</tr><tr>"); html("<td class='label'>mode:</td>"); html("<td class='ctrl'>"); - html("<select name='ss' onchange='this.form.submit();'>"); - curr = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff; + html("<select name='dt' onchange='this.form.submit();'>"); + curr = ctx.qry.has_difftype ? ctx.qry.difftype : ctx.cfg.difftype; html_intoption(0, "unified", curr); html_intoption(1, "ssdiff", curr); html("</select></td></tr>");

@@ -362,6 +362,7 @@ const char *prefix, int show_ctrls, int raw)

{ struct commit *commit, *commit2; const unsigned char *old_tree_sha1, *new_tree_sha1; + diff_type difftype; if (!new_rev) new_rev = ctx.qry.head;

@@ -420,7 +421,8 @@

return; } - use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff; + difftype = ctx.qry.has_difftype ? ctx.qry.difftype : ctx.cfg.difftype; + use_ssdiff = difftype == DIFF_SSDIFF; if (show_ctrls) cgit_print_diff_ctrls();
M ui-shared.cui-shared.c

@@ -346,9 +346,9 @@ html("id=");

html_url_arg(rev); delim = "&amp;"; } - if (ctx.qry.ssdiff) { + if (ctx.qry.difftype) { html(delim); - html("ss=1"); + htmlf("dt=%d", ctx.qry.difftype); delim = "&amp;"; } if (ctx.qry.context > 0 && ctx.qry.context != 3) {

@@ -402,9 +402,9 @@ html("id2=");

html_url_arg(old_rev); delim = "&amp;"; } - if (ctx.qry.ssdiff) { + if (ctx.qry.difftype) { html(delim); - html("ss=1"); + htmlf("dt=%d", ctx.qry.difftype); delim = "&amp;"; } if (ctx.qry.context > 0 && ctx.qry.context != 3) {