Warmcat homepage andy@warmcat.com
libwebsockets
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1713473432, "reponame":"cgit", "desc":"CGI gitweb", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/cgit", "f":3, "items": [ {"schema":"libjg2-1", "cid":"62c68e44aa961be1d6a4b5c3af160f72", "oid":{ "oid": "d1bb699526842f656f7afa799431003ab285dac2", "alias": [ "refs/heads/decruft","refs/heads/master"]},"blobname": "ui-shared.c", "blob": "/* ui-shared.c: common web output functions\n *\n * Copyright (C) 2006-2017 cgit Development Team \u003ccgit@lists.zx2c4.com\u003e\n *\n * Licensed under GNU General Public License v2\n * (see COPYING for full license text)\n */\n\n#include \u0022cgit.h\u0022\n#include \u0022ui-shared.h\u0022\n#include \u0022cmd.h\u0022\n#include \u0022html.h\u0022\n#include \u0022version.h\u0022\n\nstatic const char cgit_doctype[] \u003d\n\u0022\u003c!DOCTYPE html\u003e\u005cn\u0022;\n\nstatic char *http_date(time_t t)\n{\n\tstatic char day[][4] \u003d\n\t\t{\u0022Sun\u0022, \u0022Mon\u0022, \u0022Tue\u0022, \u0022Wed\u0022, \u0022Thu\u0022, \u0022Fri\u0022, \u0022Sat\u0022};\n\tstatic char month[][4] \u003d\n\t\t{\u0022Jan\u0022, \u0022Feb\u0022, \u0022Mar\u0022, \u0022Apr\u0022, \u0022May\u0022, \u0022Jun\u0022,\n\t\t \u0022Jul\u0022, \u0022Aug\u0022, \u0022Sep\u0022, \u0022Oct\u0022, \u0022Nov\u0022, \u0022Dec\u0022};\n\tstruct tm *tm \u003d gmtime(\u0026t);\n\treturn fmt(\u0022%s, %02d %s %04d %02d:%02d:%02d GMT\u0022, day[tm-\u003etm_wday],\n\t\t tm-\u003etm_mday, month[tm-\u003etm_mon], 1900 + tm-\u003etm_year,\n\t\t tm-\u003etm_hour, tm-\u003etm_min, tm-\u003etm_sec);\n}\n\nvoid cgit_print_error(const char *fmt, ...)\n{\n\tva_list ap;\n\tva_start(ap, fmt);\n\tcgit_vprint_error(fmt, ap);\n\tva_end(ap);\n}\n\nvoid cgit_vprint_error(const char *fmt, va_list ap)\n{\n\tva_list cp;\n\thtml(\u0022\u003cdiv class\u003d'error'\u003e\u0022);\n\tva_copy(cp, ap);\n\thtml_vtxtf(fmt, cp);\n\tva_end(cp);\n\thtml(\u0022\u003c/div\u003e\u005cn\u0022);\n}\n\nconst char *cgit_httpscheme(void)\n{\n\tif (ctx.env.https \u0026\u0026 !strcmp(ctx.env.https, \u0022on\u0022))\n\t\treturn \u0022https://\u0022;\n\telse\n\t\treturn \u0022http://\u0022;\n}\n\nchar *cgit_hosturl(void)\n{\n\tif (ctx.env.http_host)\n\t\treturn xstrdup(ctx.env.http_host);\n\tif (!ctx.env.server_name)\n\t\treturn NULL;\n\tif (!ctx.env.server_port || atoi(ctx.env.server_port) \u003d\u003d 80)\n\t\treturn xstrdup(ctx.env.server_name);\n\treturn fmtalloc(\u0022%s:%s\u0022, ctx.env.server_name, ctx.env.server_port);\n}\n\nchar *cgit_currenturl(void)\n{\n\tconst char *root \u003d cgit_rooturl();\n\tsize_t len \u003d strlen(root);\n\n\tif (!ctx.qry.url)\n\t\treturn xstrdup(root);\n\tif (len \u0026\u0026 root[len - 1] \u003d\u003d '/')\n\t\treturn fmtalloc(\u0022%s%s\u0022, root, ctx.qry.url);\n\treturn fmtalloc(\u0022%s/%s\u0022, root, ctx.qry.url);\n}\n\nconst char *cgit_rooturl(void)\n{\n\tif (ctx.cfg.virtual_root)\n\t\treturn ctx.cfg.virtual_root;\n\telse\n\t\treturn ctx.cfg.script_name;\n}\n\nconst char *cgit_loginurl(void)\n{\n\tstatic const char *login_url;\n\tif (!login_url)\n\t\tlogin_url \u003d fmtalloc(\u0022%s?p\u003dlogin\u0022, cgit_rooturl());\n\treturn login_url;\n}\n\nchar *cgit_repourl(const char *reponame)\n{\n\tif (ctx.cfg.virtual_root)\n\t\treturn fmtalloc(\u0022%s%s/\u0022, ctx.cfg.virtual_root, reponame);\n\telse\n\t\treturn fmtalloc(\u0022?r\u003d%s\u0022, reponame);\n}\n\nchar *cgit_fileurl(const char *reponame, const char *pagename,\n\t\t const char *filename, const char *query)\n{\n\tstruct strbuf sb \u003d STRBUF_INIT;\n\tchar *delim;\n\n\tif (ctx.cfg.virtual_root) {\n\t\tstrbuf_addf(\u0026sb, \u0022%s%s/%s/%s\u0022, ctx.cfg.virtual_root, reponame,\n\t\t\t pagename, (filename ? filename:\u0022\u0022));\n\t\tdelim \u003d \u0022?\u0022;\n\t} else {\n\t\tstrbuf_addf(\u0026sb, \u0022?url\u003d%s/%s/%s\u0022, reponame, pagename,\n\t\t\t (filename ? filename : \u0022\u0022));\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (query)\n\t\tstrbuf_addf(\u0026sb, \u0022%s%s\u0022, delim, query);\n\treturn strbuf_detach(\u0026sb, NULL);\n}\n\nchar *cgit_pageurl(const char *reponame, const char *pagename,\n\t\t const char *query)\n{\n\treturn cgit_fileurl(reponame, pagename, NULL, query);\n}\n\n/* result is NULL or must be freed */\nstatic char *cgit_repobasename(const char *reponame)\n{\n\tint last \u003d strlen(reponame) - 1, n;\n\tchar *rv;\n\n\tif (last \u003c 1)\n\t\treturn NULL;\n\n\twhile (last \u0026\u0026 reponame[last] \u003d\u003d '/')\n\t\tlast--;\n\n\tif (last \u003e\u003d 3 \u0026\u0026 !strncmp(\u0026reponame[last - 3], \u0022.git\u0022, 3))\n\t\tlast -\u003d 3;\n\n\twhile (last \u0026\u0026 reponame[last] \u003d\u003d '/')\n\t\tlast--;\n\n\tn \u003d last;\n\twhile (n \u0026\u0026 reponame[n] !\u003d '/')\n\t\tn--;\n\n\trv \u003d xmalloc(last - n + 2);\n\tstrncpy(rv, \u0026reponame[n], last - n + 1);\n\trv[last - n + 1] \u003d '\u005c0';\n\n\treturn rv;\n}\n\n/* result is NULL or must be freed */\nchar *cgit_snapshot_prefix(const struct cgit_repo *repo)\n{\n\tif (repo-\u003esnapshot_prefix)\n\t\treturn xstrdup(repo-\u003esnapshot_prefix);\n\n\treturn cgit_repobasename(repo-\u003eurl);\n}\n\nstatic void site_url(const char *page, const char *search, const char *sort, int ofs, int always_root)\n{\n\tchar *delim \u003d \u0022?\u0022;\n\n\tif (always_root || page)\n\t\thtml_attr(cgit_rooturl());\n\telse {\n\t\tchar *currenturl \u003d cgit_currenturl();\n\t\thtml_attr(currenturl);\n\t\tfree(currenturl);\n\t}\n\n\tif (page) {\n\t\thtmlf(\u0022?p\u003d%s\u0022, page);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (search) {\n\t\thtml(delim);\n\t\thtml(\u0022q\u003d\u0022);\n\t\thtml_attr(search);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (sort) {\n\t\thtml(delim);\n\t\thtml(\u0022s\u003d\u0022);\n\t\thtml_attr(sort);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ofs) {\n\t\thtml(delim);\n\t\thtmlf(\u0022ofs\u003d%d\u0022, ofs);\n\t}\n}\n\nstatic void site_link(const char *page, const char *name, const char *title,\n\t\t const char *class, const char *search, const char *sort, int ofs, int always_root)\n{\n\thtml(\u0022\u003ca\u0022);\n\tif (title) {\n\t\thtml(\u0022 title\u003d'\u0022);\n\t\thtml_attr(title);\n\t\thtml(\u0022'\u0022);\n\t}\n\tif (class) {\n\t\thtml(\u0022 class\u003d'\u0022);\n\t\thtml_attr(class);\n\t\thtml(\u0022'\u0022);\n\t}\n\thtml(\u0022 href\u003d'\u0022);\n\tsite_url(page, search, sort, ofs, always_root);\n\thtml(\u0022'\u003e\u0022);\n\thtml_txt(name);\n\thtml(\u0022\u003c/a\u003e\u0022);\n}\n\nvoid cgit_index_link(const char *name, const char *title, const char *class,\n\t\t const char *pattern, const char *sort, int ofs, int always_root)\n{\n\tsite_link(NULL, name, title, class, pattern, sort, ofs, always_root);\n}\n\nconst char *cgit_repo_create_url(struct strbuf *sb, struct strbuf *sb_post,\n\t\t\t\t const char *page, const char *head,\n\t\t\t\t const char *path)\n{\n\tconst char *delim \u003d \u0022?\u0022;\n\n\tif (ctx.cfg.virtual_root) {\n\t\tstrbuf_addf(sb, \u0022%s%s\u0022, ctx.cfg.virtual_root, ctx.repo-\u003eurl);\n\t} else {\n\t\tstrbuf_addstr(sb, ctx.cfg.script_name);\n\t\tsb \u003d sb_post;\n\t\tstrbuf_addf(sb, \u0022?url\u003d%s\u0022, ctx.repo-\u003eurl);\n\t\tdelim \u003d \u0022\u0026\u0022;\n\t}\n\n\tif (ctx.repo-\u003eurl[strlen(ctx.repo-\u003eurl) - 1] !\u003d '/')\n\t\tstrbuf_addch(sb, '/');\n\n\tif (page) {\n\t\tstrbuf_addf(sb, \u0022%s/\u0022, page);\n\t\tif (path)\n\t\t\tstrbuf_addstr(sb, path);\n\t}\n\n\tif (head \u0026\u0026 ctx.repo-\u003edefbranch \u0026\u0026 strcmp(head, ctx.repo-\u003edefbranch)) {\n\t\tstrbuf_addf(sb_post, \u0022%sh\u003d%s\u0022, delim, head);\n\t\tdelim \u003d \u0022\u0026\u0022;\n\t}\n\n\treturn delim;\n}\n\nstatic char *repolink(const char *title, const char *class, const char *page,\n\t\t const char *head, const char *path)\n{\n\tchar *delim \u003d \u0022?\u0022;\n\n\thtml(\u0022\u003ca\u0022);\n\tif (title) {\n\t\thtml(\u0022 title\u003d'\u0022);\n\t\thtml_attr(title);\n\t\thtml(\u0022'\u0022);\n\t}\n\tif (class) {\n\t\thtml(\u0022 class\u003d'\u0022);\n\t\thtml_attr(class);\n\t\thtml(\u0022'\u0022);\n\t}\n\thtml(\u0022 href\u003d'\u0022);\n\tif (ctx.cfg.virtual_root) {\n\t\thtml_url_path(ctx.cfg.virtual_root);\n\t\thtml_url_path(ctx.repo-\u003eurl);\n\t\tif (ctx.repo-\u003eurl[strlen(ctx.repo-\u003eurl) - 1] !\u003d '/')\n\t\t\thtml(\u0022/\u0022);\n\t\tif (page) {\n\t\t\thtml_url_path(page);\n\t\t\thtml(\u0022/\u0022);\n\t\t\tif (path)\n\t\t\t\thtml_url_path(path);\n\t\t}\n\t} else {\n\t\thtml_url_path(ctx.cfg.script_name);\n\t\thtml(\u0022?url\u003d\u0022);\n\t\thtml_url_arg(ctx.repo-\u003eurl);\n\t\tif (ctx.repo-\u003eurl[strlen(ctx.repo-\u003eurl) - 1] !\u003d '/')\n\t\t\thtml(\u0022/\u0022);\n\t\tif (page) {\n\t\t\thtml_url_arg(page);\n\t\t\thtml(\u0022/\u0022);\n\t\t\tif (path)\n\t\t\t\thtml_url_arg(path);\n\t\t}\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (head \u0026\u0026 ctx.repo-\u003edefbranch \u0026\u0026 strcmp(head, ctx.repo-\u003edefbranch)) {\n\t\thtml(delim);\n\t\thtml(\u0022h\u003d\u0022);\n\t\thtml_url_arg(head);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\treturn fmt(\u0022%s\u0022, delim);\n}\n\nstatic void reporevlink(const char *page, const char *name, const char *title,\n\t\t\tconst char *class, const char *head, const char *rev,\n\t\t\tconst char *path)\n{\n\tchar *delim;\n\n\tdelim \u003d repolink(title, class, page, head, path);\n\tif (rev \u0026\u0026 ctx.qry.head !\u003d NULL \u0026\u0026 strcmp(rev, ctx.qry.head)) {\n\t\thtml(delim);\n\t\thtml(\u0022id\u003d\u0022);\n\t\thtml_url_arg(rev);\n\t}\n\thtml(\u0022'\u003e\u0022);\n\thtml_txt(name);\n\thtml(\u0022\u003c/a\u003e\u0022);\n}\n\nvoid cgit_summary_link(const char *name, const char *title, const char *class,\n\t\t const char *head)\n{\n\treporevlink(NULL, name, title, class, head, NULL, NULL);\n}\n\nvoid cgit_tag_link(const char *name, const char *title, const char *class,\n\t\t const char *tag)\n{\n\treporevlink(\u0022tag\u0022, name, title, class, tag, NULL, NULL);\n}\n\nvoid cgit_tree_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path)\n{\n\treporevlink(\u0022tree\u0022, name, title, class, head, rev, path);\n}\n\nvoid cgit_plain_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path)\n{\n\treporevlink(\u0022plain\u0022, name, title, class, head, rev, path);\n}\n\nvoid cgit_blame_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path)\n{\n\treporevlink(\u0022blame\u0022, name, title, class, head, rev, path);\n}\n\nvoid cgit_log_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path,\n\t\t int ofs, const char *grep, const char *pattern, int showmsg,\n\t\t int follow)\n{\n\tchar *delim;\n\n\tdelim \u003d repolink(title, class, \u0022log\u0022, head, path);\n\tif (rev \u0026\u0026 ctx.qry.head \u0026\u0026 strcmp(rev, ctx.qry.head)) {\n\t\thtml(delim);\n\t\thtml(\u0022id\u003d\u0022);\n\t\thtml_url_arg(rev);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (grep \u0026\u0026 pattern) {\n\t\thtml(delim);\n\t\thtml(\u0022qt\u003d\u0022);\n\t\thtml_url_arg(grep);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t\thtml(delim);\n\t\thtml(\u0022q\u003d\u0022);\n\t\thtml_url_arg(pattern);\n\t}\n\tif (ofs \u003e 0) {\n\t\thtml(delim);\n\t\thtml(\u0022ofs\u003d\u0022);\n\t\thtmlf(\u0022%d\u0022, ofs);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (showmsg) {\n\t\thtml(delim);\n\t\thtml(\u0022showmsg\u003d1\u0022);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (follow) {\n\t\thtml(delim);\n\t\thtml(\u0022follow\u003d1\u0022);\n\t}\n\thtml(\u0022'\u003e\u0022);\n\thtml_txt(name);\n\thtml(\u0022\u003c/a\u003e\u0022);\n}\n\nvoid cgit_commit_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path)\n{\n\tchar *delim;\n\n\tdelim \u003d repolink(title, class, \u0022commit\u0022, head, path);\n\tif (rev \u0026\u0026 ctx.qry.head \u0026\u0026 strcmp(rev, ctx.qry.head)) {\n\t\thtml(delim);\n\t\thtml(\u0022id\u003d\u0022);\n\t\thtml_url_arg(rev);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.difftype) {\n\t\thtml(delim);\n\t\thtmlf(\u0022dt\u003d%d\u0022, ctx.qry.difftype);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.context \u003e 0 \u0026\u0026 ctx.qry.context !\u003d 3) {\n\t\thtml(delim);\n\t\thtml(\u0022context\u003d\u0022);\n\t\thtmlf(\u0022%d\u0022, ctx.qry.context);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.ignorews) {\n\t\thtml(delim);\n\t\thtml(\u0022ignorews\u003d1\u0022);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.follow) {\n\t\thtml(delim);\n\t\thtml(\u0022follow\u003d1\u0022);\n\t}\n\thtml(\u0022'\u003e\u0022);\n\tif (name[0] !\u003d '\u005c0') {\n\t\tif (strlen(name) \u003e ctx.cfg.max_msg_len \u0026\u0026 ctx.cfg.max_msg_len \u003e\u003d 15) {\n\t\t\thtml_ntxt(name, ctx.cfg.max_msg_len - 3);\n\t\t\thtml(\u0022...\u0022);\n\t\t} else\n\t\t\thtml_txt(name);\n\t} else\n\t\thtml_txt(\u0022(no commit message)\u0022);\n\thtml(\u0022\u003c/a\u003e\u0022);\n}\n\nvoid cgit_refs_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path)\n{\n\treporevlink(\u0022refs\u0022, name, title, class, head, rev, path);\n}\n\nvoid cgit_snapshot_link(const char *name, const char *title, const char *class,\n\t\t\tconst char *head, const char *rev,\n\t\t\tconst char *archivename)\n{\n\treporevlink(\u0022snapshot\u0022, name, title, class, head, rev, archivename);\n}\n\nvoid cgit_diff_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *new_rev, const char *old_rev,\n\t\t const char *path)\n{\n\tchar *delim;\n\n\tdelim \u003d repolink(title, class, \u0022diff\u0022, head, path);\n\tif (new_rev \u0026\u0026 ctx.qry.head !\u003d NULL \u0026\u0026 strcmp(new_rev, ctx.qry.head)) {\n\t\thtml(delim);\n\t\thtml(\u0022id\u003d\u0022);\n\t\thtml_url_arg(new_rev);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (old_rev) {\n\t\thtml(delim);\n\t\thtml(\u0022id2\u003d\u0022);\n\t\thtml_url_arg(old_rev);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.difftype) {\n\t\thtml(delim);\n\t\thtmlf(\u0022dt\u003d%d\u0022, ctx.qry.difftype);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.context \u003e 0 \u0026\u0026 ctx.qry.context !\u003d 3) {\n\t\thtml(delim);\n\t\thtml(\u0022context\u003d\u0022);\n\t\thtmlf(\u0022%d\u0022, ctx.qry.context);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.ignorews) {\n\t\thtml(delim);\n\t\thtml(\u0022ignorews\u003d1\u0022);\n\t\tdelim \u003d \u0022\u0026amp;\u0022;\n\t}\n\tif (ctx.qry.follow) {\n\t\thtml(delim);\n\t\thtml(\u0022follow\u003d1\u0022);\n\t}\n\thtml(\u0022'\u003e\u0022);\n\thtml_txt(name);\n\thtml(\u0022\u003c/a\u003e\u0022);\n}\n\nvoid cgit_patch_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *rev, const char *path)\n{\n\treporevlink(\u0022patch\u0022, name, title, class, head, rev, path);\n}\n\nvoid cgit_stats_link(const char *name, const char *title, const char *class,\n\t\t const char *head, const char *path)\n{\n\treporevlink(\u0022stats\u0022, name, title, class, head, NULL, path);\n}\n\nstatic void cgit_self_link(char *name, const char *title, const char *class)\n{\n\tif (!strcmp(ctx.qry.page, \u0022repolist\u0022))\n\t\tcgit_index_link(name, title, class, ctx.qry.search, ctx.qry.sort,\n\t\t\t\tctx.qry.ofs, 1);\n\telse if (!strcmp(ctx.qry.page, \u0022summary\u0022))\n\t\tcgit_summary_link(name, title, class, ctx.qry.head);\n\telse if (!strcmp(ctx.qry.page, \u0022tag\u0022))\n\t\tcgit_tag_link(name, title, class, ctx.qry.has_sha1 ?\n\t\t\t ctx.qry.sha1 : ctx.qry.head);\n\telse if (!strcmp(ctx.qry.page, \u0022tree\u0022))\n\t\tcgit_tree_link(name, title, class, ctx.qry.head,\n\t\t\t ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t ctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022plain\u0022))\n\t\tcgit_plain_link(name, title, class, ctx.qry.head,\n\t\t\t\tctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t\tctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022blame\u0022))\n\t\tcgit_blame_link(name, title, class, ctx.qry.head,\n\t\t\t\tctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t\tctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022log\u0022))\n\t\tcgit_log_link(name, title, class, ctx.qry.head,\n\t\t\t ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t ctx.qry.path, ctx.qry.ofs,\n\t\t\t ctx.qry.grep, ctx.qry.search,\n\t\t\t ctx.qry.showmsg, ctx.qry.follow);\n\telse if (!strcmp(ctx.qry.page, \u0022commit\u0022))\n\t\tcgit_commit_link(name, title, class, ctx.qry.head,\n\t\t\t\t ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t\t ctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022patch\u0022))\n\t\tcgit_patch_link(name, title, class, ctx.qry.head,\n\t\t\t\tctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t\tctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022refs\u0022))\n\t\tcgit_refs_link(name, title, class, ctx.qry.head,\n\t\t\t ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t ctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022snapshot\u0022))\n\t\tcgit_snapshot_link(name, title, class, ctx.qry.head,\n\t\t\t\t ctx.qry.has_sha1 ? ctx.qry.sha1 : NULL,\n\t\t\t\t ctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022diff\u0022))\n\t\tcgit_diff_link(name, title, class, ctx.qry.head,\n\t\t\t ctx.qry.sha1, ctx.qry.sha2,\n\t\t\t ctx.qry.path);\n\telse if (!strcmp(ctx.qry.page, \u0022stats\u0022))\n\t\tcgit_stats_link(name, title, class, ctx.qry.head,\n\t\t\t\tctx.qry.path);\n\telse {\n\t\t/* Don't known how to make link for this page */\n\t\trepolink(title, class, ctx.qry.page, ctx.qry.head, ctx.qry.path);\n\t\thtml(\u0022\u003e\u003c!-- cgit_self_link() doesn't know how to make link for page '\u0022);\n\t\thtml_txt(ctx.qry.page);\n\t\thtml(\u0022' --\u003e\u0022);\n\t\thtml_txt(name);\n\t\thtml(\u0022\u003c/a\u003e\u0022);\n\t}\n}\n\nvoid cgit_object_link(struct object *obj)\n{\n\tchar *page, *shortrev, *fullrev, *name;\n\n\tfullrev \u003d oid_to_hex(\u0026obj-\u003eoid);\n\tshortrev \u003d xstrdup(fullrev);\n\tshortrev[10] \u003d '\u005c0';\n\tif (obj-\u003etype \u003d\u003d OBJ_COMMIT) {\n\t\tcgit_commit_link(fmt(\u0022commit %s...\u0022, shortrev), NULL, NULL,\n\t\t\t\t ctx.qry.head, fullrev, NULL);\n\t\treturn;\n\t} else if (obj-\u003etype \u003d\u003d OBJ_TREE)\n\t\tpage \u003d \u0022tree\u0022;\n\telse if (obj-\u003etype \u003d\u003d OBJ_TAG)\n\t\tpage \u003d \u0022tag\u0022;\n\telse\n\t\tpage \u003d \u0022blob\u0022;\n\tname \u003d fmt(\u0022%s %s...\u0022, type_name(obj-\u003etype), shortrev);\n\treporevlink(page, name, NULL, NULL, ctx.qry.head, fullrev, NULL);\n}\n\nstatic struct string_list_item *lookup_path(struct string_list *list,\n\t\t\t\t\t const char *path)\n{\n\tstruct string_list_item *item;\n\n\twhile (path \u0026\u0026 path[0]) {\n\t\tif ((item \u003d string_list_lookup(list, path)))\n\t\t\treturn item;\n\t\tif (!(path \u003d strchr(path, '/')))\n\t\t\tbreak;\n\t\tpath++;\n\t}\n\treturn NULL;\n}\n\nvoid cgit_submodule_link(const char *class, char *path, const char *rev)\n{\n\tstruct string_list *list;\n\tstruct string_list_item *item;\n\tchar tail, *dir;\n\tsize_t len;\n\n\tlen \u003d 0;\n\ttail \u003d 0;\n\tlist \u003d \u0026ctx.repo-\u003esubmodules;\n\titem \u003d lookup_path(list, path);\n\tif (!item) {\n\t\tlen \u003d strlen(path);\n\t\ttail \u003d path[len - 1];\n\t\tif (tail \u003d\u003d '/') {\n\t\t\tpath[len - 1] \u003d 0;\n\t\t\titem \u003d lookup_path(list, path);\n\t\t}\n\t}\n\tif (item || ctx.repo-\u003emodule_link) {\n\t\thtml(\u0022\u003ca \u0022);\n\t\tif (class)\n\t\t\thtmlf(\u0022class\u003d'%s' \u0022, class);\n\t\thtml(\u0022href\u003d'\u0022);\n\t\tif (item) {\n\t\t\thtml_attrf(item-\u003eutil, rev);\n\t\t} else {\n\t\t\tdir \u003d strrchr(path, '/');\n\t\t\tif (dir)\n\t\t\t\tdir++;\n\t\t\telse\n\t\t\t\tdir \u003d path;\n\t\t\thtml_attrf(ctx.repo-\u003emodule_link, dir, rev);\n\t\t}\n\t\thtml(\u0022'\u003e\u0022);\n\t\thtml_txt(path);\n\t\thtml(\u0022\u003c/a\u003e\u0022);\n\t} else {\n\t\thtml(\u0022\u003cspan\u0022);\n\t\tif (class)\n\t\t\thtmlf(\u0022 class\u003d'%s'\u0022, class);\n\t\thtml(\u0022\u003e\u0022);\n\t\thtml_txt(path);\n\t\thtml(\u0022\u003c/span\u003e\u0022);\n\t}\n\thtml_txtf(\u0022 @ %.7s\u0022, rev);\n\tif (item \u0026\u0026 tail)\n\t\tpath[len - 1] \u003d tail;\n}\n\nconst struct date_mode *cgit_date_mode(enum date_mode_type type)\n{\n\tstatic struct date_mode mode;\n\tmode.type \u003d type;\n\tmode.local \u003d ctx.cfg.local_time;\n\treturn \u0026mode;\n}\n\nstatic void print_rel_date(time_t t, int tz, double value,\n\tconst char *class, const char *suffix)\n{\n\thtmlf(\u0022\u003cspan class\u003d'%s' ut\u003d'%\u0022 PRIu64 \u0022' title\u003d'\u0022, class, (uint64_t)t);\n\thtml_attr(show_date(t, tz, cgit_date_mode(DATE_ISO8601)));\n\thtmlf(\u0022'\u003e%.0f %s\u003c/span\u003e\u0022, value, suffix);\n}\n\nvoid cgit_print_age(time_t t, int tz, time_t max_relative)\n{\n\ttime_t now, secs;\n\n\tif (!t)\n\t\treturn;\n\ttime(\u0026now);\n\tsecs \u003d now - t;\n\tif (secs \u003c 0)\n\t\tsecs \u003d 0;\n\n\tif (secs \u003e max_relative \u0026\u0026 max_relative \u003e\u003d 0) {\n\t\thtml(\u0022\u003cspan title\u003d'\u0022);\n\t\thtml_attr(show_date(t, tz, cgit_date_mode(DATE_ISO8601)));\n\t\thtml(\u0022'\u003e\u0022);\n\t\thtml_txt(show_date(t, tz, cgit_date_mode(DATE_SHORT)));\n\t\thtml(\u0022\u003c/span\u003e\u0022);\n\t\treturn;\n\t}\n\n\tif (secs \u003c TM_HOUR * 2) {\n\t\tprint_rel_date(t, tz, secs * 1.0 / TM_MIN, \u0022age-mins\u0022, \u0022min.\u0022);\n\t\treturn;\n\t}\n\tif (secs \u003c TM_DAY * 2) {\n\t\tprint_rel_date(t, tz, secs * 1.0 / TM_HOUR, \u0022age-hours\u0022, \u0022hours\u0022);\n\t\treturn;\n\t}\n\tif (secs \u003c TM_WEEK * 2) {\n\t\tprint_rel_date(t, tz, secs * 1.0 / TM_DAY, \u0022age-days\u0022, \u0022days\u0022);\n\t\treturn;\n\t}\n\tif (secs \u003c TM_MONTH * 2) {\n\t\tprint_rel_date(t, tz, secs * 1.0 / TM_WEEK, \u0022age-weeks\u0022, \u0022weeks\u0022);\n\t\treturn;\n\t}\n\tif (secs \u003c TM_YEAR * 2) {\n\t\tprint_rel_date(t, tz, secs * 1.0 / TM_MONTH, \u0022age-months\u0022, \u0022months\u0022);\n\t\treturn;\n\t}\n\tprint_rel_date(t, tz, secs * 1.0 / TM_YEAR, \u0022age-years\u0022, \u0022years\u0022);\n}\n\nvoid cgit_print_http_headers(void)\n{\n\tif (ctx.env.no_http \u0026\u0026 !strcmp(ctx.env.no_http, \u00221\u0022))\n\t\treturn;\n\n\tif (ctx.page.status)\n\t\thtmlf(\u0022Status: %d %s\u005cn\u0022, ctx.page.status, ctx.page.statusmsg);\n\tif (ctx.page.mimetype \u0026\u0026 ctx.page.charset)\n\t\thtmlf(\u0022Content-Type: %s; charset\u003d%s\u005cn\u0022, ctx.page.mimetype,\n\t\t ctx.page.charset);\n\telse if (ctx.page.mimetype)\n\t\thtmlf(\u0022Content-Type: %s\u005cn\u0022, ctx.page.mimetype);\n\tif (ctx.page.size)\n\t\thtmlf(\u0022Content-Length: %zd\u005cn\u0022, ctx.page.size);\n\tif (ctx.page.filename) {\n\t\thtml(\u0022Content-Disposition: inline; filename\u003d\u005c\u0022\u0022);\n\t\thtml_header_arg_in_quotes(ctx.page.filename);\n\t\thtml(\u0022\u005c\u0022\u005cn\u0022);\n\t}\n\tif (!ctx.env.authenticated)\n\t\thtml(\u0022Cache-Control: no-cache, no-store\u005cn\u0022);\n\thtmlf(\u0022Last-Modified: %s\u005cn\u0022, http_date(ctx.page.modified));\n\thtmlf(\u0022Expires: %s\u005cn\u0022, http_date(ctx.page.expires));\n\tif (ctx.page.etag)\n\t\thtmlf(\u0022ETag: \u005c\u0022%s\u005c\u0022\u005cn\u0022, ctx.page.etag);\n\thtml(\u0022\u005cn\u0022);\n\tif (ctx.env.request_method \u0026\u0026 !strcmp(ctx.env.request_method, \u0022HEAD\u0022))\n\t\texit(0);\n}\n\nvoid cgit_redirect(const char *url, bool permanent)\n{\n\thtmlf(\u0022Status: %d %s\u005cn\u0022, permanent ? 301 : 302, permanent ? \u0022Moved\u0022 : \u0022Found\u0022);\n\thtml(\u0022Location: \u0022);\n\thtml_url_path(url);\n\thtml(\u0022\u005cn\u005cn\u0022);\n}\n\nstatic void print_rel_vcs_link(const char *url)\n{\n\thtml(\u0022\u003clink rel\u003d'vcs-git' href\u003d'\u0022);\n\thtml_attr(url);\n\thtml(\u0022' title\u003d'\u0022);\n\thtml_attr(ctx.repo-\u003ename);\n\thtml(\u0022 Git repository'/\u003e\u005cn\u0022);\n}\n\nstatic int emit_css_link(struct string_list_item *s, void *arg)\n{\n\thtml(\u0022\u003clink rel\u003d'stylesheet' type\u003d'text/css' href\u003d'\u0022);\n\tif (s)\n\t\thtml_attr(s-\u003estring);\n\telse\n\t\thtml_attr((const char *)arg);\n\thtml(\u0022'/\u003e\u005cn\u0022);\n\n\treturn 0;\n}\n\t\nstatic int emit_js_link(struct string_list_item *s, void *arg)\n{\n\thtml(\u0022\u003cscript type\u003d'text/javascript' src\u003d'\u0022);\n\thtml_attr(s-\u003estring);\n\thtml(\u0022'\u003e\u003c/script\u003e\u005cn\u0022);\n\n\treturn 0;\n}\n\nvoid cgit_print_docstart(void)\n{\n\tchar *host \u003d cgit_hosturl();\n\n\tif (ctx.cfg.embedded) {\n\t\tif (ctx.cfg.header)\n\t\t\thtml_include(ctx.cfg.header);\n\t\treturn;\n\t}\n\n\thtml(cgit_doctype);\n\thtml(\u0022\u003chtml lang\u003d'en'\u003e\u005cn\u0022);\n\thtml(\u0022\u003chead\u003e\u005cn\u0022);\n\thtml(\u0022\u003ctitle\u003e\u0022);\n\thtml_txt(ctx.page.title);\n\thtml(\u0022\u003c/title\u003e\u005cn\u0022);\n\thtmlf(\u0022\u003cmeta name\u003d'generator' content\u003d'cgit %s'/\u003e\u005cn\u0022, cgit_version);\n\tif (ctx.cfg.robots \u0026\u0026 *ctx.cfg.robots)\n\t\thtmlf(\u0022\u003cmeta name\u003d'robots' content\u003d'%s'/\u003e\u005cn\u0022, ctx.cfg.robots);\n\n\tif (ctx.cfg.css.items)\n\t\tfor_each_string_list(\u0026ctx.cfg.css, emit_css_link, NULL);\n\telse\n\t\temit_css_link(NULL, \u0022/cgit.css\u0022);\n\n\tfor_each_string_list(\u0026ctx.cfg.js, emit_js_link, NULL);\n\n\tif (ctx.cfg.favicon) {\n\t\thtml(\u0022\u003clink rel\u003d'shortcut icon' href\u003d'\u0022);\n\t\thtml_attr(ctx.cfg.favicon);\n\t\thtml(\u0022'/\u003e\u005cn\u0022);\n\t}\n\tif (host \u0026\u0026 ctx.repo \u0026\u0026 ctx.qry.head) {\n\t\tchar *fileurl;\n\t\tstruct strbuf sb \u003d STRBUF_INIT;\n\t\tstrbuf_addf(\u0026sb, \u0022h\u003d%s\u0022, ctx.qry.head);\n\n\t\thtml(\u0022\u003clink rel\u003d'alternate' title\u003d'Atom feed' href\u003d'\u0022);\n\t\thtml(cgit_httpscheme());\n\t\thtml_attr(host);\n\t\tfileurl \u003d cgit_fileurl(ctx.repo-\u003eurl, \u0022atom\u0022, ctx.qry.vpath,\n\t\t\t\t sb.buf);\n\t\thtml_attr(fileurl);\n\t\thtml(\u0022' type\u003d'application/atom+xml'/\u003e\u005cn\u0022);\n\t\tstrbuf_release(\u0026sb);\n\t\tfree(fileurl);\n\t}\n\tif (ctx.repo)\n\t\tcgit_add_clone_urls(print_rel_vcs_link);\n\tif (ctx.cfg.head_include)\n\t\thtml_include(ctx.cfg.head_include);\n\thtml(\u0022\u003c/head\u003e\u005cn\u0022);\n\thtml(\u0022\u003cbody\u003e\u005cn\u0022);\n\tif (ctx.cfg.header)\n\t\thtml_include(ctx.cfg.header);\n\tfree(host);\n}\n\nvoid cgit_print_docend(void)\n{\n\thtml(\u0022\u003c/div\u003e \u003c!-- class\u003dcontent --\u003e\u005cn\u0022);\n\tif (ctx.cfg.embedded) {\n\t\thtml(\u0022\u003c/div\u003e \u003c!-- id\u003dcgit --\u003e\u005cn\u0022);\n\t\tif (ctx.cfg.footer)\n\t\t\thtml_include(ctx.cfg.footer);\n\t\treturn;\n\t}\n\tif (ctx.cfg.footer)\n\t\thtml_include(ctx.cfg.footer);\n\telse {\n\t\thtmlf(\u0022\u003cdiv class\u003d'footer'\u003egenerated by \u003ca href\u003d'https://git.zx2c4.com/cgit/about/'\u003ecgit %s\u003c/a\u003e \u0022\n\t\t\t\u0022(\u003ca href\u003d'https://git-scm.com/'\u003egit %s\u003c/a\u003e) at \u0022, cgit_version, git_version_string);\n\t\thtml_txt(show_date(time(NULL), 0, cgit_date_mode(DATE_ISO8601)));\n\t\thtml(\u0022 (\u0022);\n\t\tcgit_print_age(time(NULL), 0, -1);\n\t\thtml(\u0022 ago)\u003c/div\u003e\u005cn\u0022);\n\t}\n\thtml(\u0022\u003c/div\u003e \u003c!-- id\u003dcgit --\u003e\u005cn\u0022);\n\thtml(\u0022\u003c/body\u003e\u005cn\u003c/html\u003e\u005cn\u0022);\n}\n\nvoid cgit_print_error_page(int code, const char *msg, const char *fmt, ...)\n{\n\tva_list ap;\n\tctx.page.expires \u003d ctx.cfg.cache_dynamic_ttl;\n\tctx.page.status \u003d code;\n\tctx.page.statusmsg \u003d msg;\n\tcgit_print_layout_start();\n\tva_start(ap, fmt);\n\tcgit_vprint_error(fmt, ap);\n\tva_end(ap);\n\tcgit_print_layout_end();\n}\n\nvoid cgit_print_layout_start(void)\n{\n\tcgit_print_http_headers();\n\tcgit_print_docstart();\n\tcgit_print_pageheader();\n}\n\nvoid cgit_print_layout_end(void)\n{\n\tcgit_print_docend();\n}\n\nstatic void add_clone_urls(void (*fn)(const char *), char *txt, char *suffix)\n{\n\tstruct strbuf **url_list \u003d strbuf_split_str(txt, ' ', 0);\n\tint i;\n\n\tfor (i \u003d 0; url_list[i]; i++) {\n\t\tstrbuf_rtrim(url_list[i]);\n\t\tif (url_list[i]-\u003elen \u003d\u003d 0)\n\t\t\tcontinue;\n\t\tif (suffix \u0026\u0026 *suffix)\n\t\t\tstrbuf_addf(url_list[i], \u0022/%s\u0022, suffix);\n\t\tfn(url_list[i]-\u003ebuf);\n\t}\n\n\tstrbuf_list_free(url_list);\n}\n\nvoid cgit_add_clone_urls(void (*fn)(const char *))\n{\n\tif (ctx.repo-\u003eclone_url)\n\t\tadd_clone_urls(fn, expand_macros(ctx.repo-\u003eclone_url), NULL);\n\telse if (ctx.cfg.clone_prefix)\n\t\tadd_clone_urls(fn, ctx.cfg.clone_prefix, ctx.repo-\u003eurl);\n}\n\nstatic int print_branch_option(const char *refname, const struct object_id *oid,\n\t\t\t int flags, void *cb_data)\n{\n\tchar *name \u003d (char *)refname;\n\thtml_option(name, name, ctx.qry.head);\n\treturn 0;\n}\n\nvoid cgit_add_hidden_formfields(int incl_head, int incl_search,\n\t\t\t\tconst char *page)\n{\n\tif (!ctx.cfg.virtual_root) {\n\t\tstruct strbuf url \u003d STRBUF_INIT;\n\n\t\tstrbuf_addf(\u0026url, \u0022%s/%s\u0022, ctx.qry.repo, page);\n\t\tif (ctx.qry.vpath)\n\t\t\tstrbuf_addf(\u0026url, \u0022/%s\u0022, ctx.qry.vpath);\n\t\thtml_hidden(\u0022url\u0022, url.buf);\n\t\tstrbuf_release(\u0026url);\n\t}\n\n\tif (incl_head \u0026\u0026 ctx.qry.head \u0026\u0026 ctx.repo-\u003edefbranch \u0026\u0026\n\t strcmp(ctx.qry.head, ctx.repo-\u003edefbranch))\n\t\thtml_hidden(\u0022h\u0022, ctx.qry.head);\n\n\tif (ctx.qry.sha1)\n\t\thtml_hidden(\u0022id\u0022, ctx.qry.sha1);\n\tif (ctx.qry.sha2)\n\t\thtml_hidden(\u0022id2\u0022, ctx.qry.sha2);\n\tif (ctx.qry.showmsg)\n\t\thtml_hidden(\u0022showmsg\u0022, \u00221\u0022);\n\n\tif (incl_search) {\n\t\tif (ctx.qry.grep)\n\t\t\thtml_hidden(\u0022qt\u0022, ctx.qry.grep);\n\t\tif (ctx.qry.search)\n\t\t\thtml_hidden(\u0022q\u0022, ctx.qry.search);\n\t}\n}\n\nstatic const char *hc(const char *page)\n{\n\tif (!ctx.qry.page)\n\t\treturn NULL;\n\n\treturn strcmp(ctx.qry.page, page) ? NULL : \u0022active\u0022;\n}\n\nstatic void cgit_print_path_crumbs(char *path)\n{\n\tchar *old_path \u003d ctx.qry.path;\n\tchar *p \u003d path, *q, *end \u003d path + strlen(path);\n\n\tctx.qry.path \u003d NULL;\n\tcgit_self_link(\u0022root\u0022, NULL, NULL);\n\tctx.qry.path \u003d p \u003d path;\n\twhile (p \u003c end) {\n\t\tif (!(q \u003d strchr(p, '/')))\n\t\t\tq \u003d end;\n\t\t*q \u003d '\u005c0';\n\t\thtml_txt(\u0022/\u0022);\n\t\tcgit_self_link(p, NULL, NULL);\n\t\tif (q \u003c end)\n\t\t\t*q \u003d '/';\n\t\tp \u003d q + 1;\n\t}\n\tctx.qry.path \u003d old_path;\n}\n\nstatic void print_branch_combo_form(void)\n{\n\thtml(\u0022\u003cform method\u003d'get'\u003e\u005cn\u0022);\n\tcgit_add_hidden_formfields(0, 1, ctx.qry.page);\n\thtml(\u0022\u003cselect name\u003d'h' onchange\u003d'this.form.submit();'\u003e\u005cn\u0022);\n\tfor_each_branch_ref(print_branch_option, ctx.qry.head);\n\tif (ctx.repo-\u003eenable_remote_branches)\n\t\tfor_each_remote_ref(print_branch_option, ctx.qry.head);\n\thtml(\u0022\u003c/select\u003e \u0022);\n\thtml(\u0022\u003cinput type\u003d'submit' value\u003d'switch'/\u003e\u0022);\n\thtml(\u0022\u003c/form\u003e\u0022);\n}\n\nstatic void print_header(void)\n{\n\tchar *logo \u003d NULL, *logo_link \u003d NULL;\n\n\thtml(\u0022\u003ctable id\u003d'header'\u003e\u005cn\u0022);\n\thtml(\u0022\u003ctr\u003e\u005cn\u0022);\n\n\tif (ctx.repo \u0026\u0026 ctx.repo-\u003elogo \u0026\u0026 *ctx.repo-\u003elogo)\n\t\tlogo \u003d ctx.repo-\u003elogo;\n\telse\n\t\tlogo \u003d ctx.cfg.logo;\n\tif (ctx.repo \u0026\u0026 ctx.repo-\u003elogo_link \u0026\u0026 *ctx.repo-\u003elogo_link)\n\t\tlogo_link \u003d ctx.repo-\u003elogo_link;\n\telse\n\t\tlogo_link \u003d ctx.cfg.logo_link;\n\tif (logo \u0026\u0026 *logo) {\n\t\thtml(\u0022\u003ctd class\u003d'logo' rowspan\u003d'2'\u003e\u003ca href\u003d'\u0022);\n\t\tif (logo_link \u0026\u0026 *logo_link)\n\t\t\thtml_attr(logo_link);\n\t\telse\n\t\t\thtml_attr(cgit_rooturl());\n\t\thtml(\u0022'\u003e\u003cimg src\u003d'\u0022);\n\t\thtml_attr(logo);\n\t\thtml(\u0022' alt\u003d'cgit logo'/\u003e\u003c/a\u003e\u003c/td\u003e\u005cn\u0022);\n\t}\n\n\thtml(\u0022\u003ctd class\u003d'main'\u003e\u0022);\n\tif (ctx.repo) {\n\t\tcgit_index_link(\u0022index\u0022, NULL, NULL, NULL, NULL, 0, 1);\n\t\thtml(\u0022 : \u0022);\n\t\tcgit_summary_link(ctx.repo-\u003ename, ctx.repo-\u003ename, NULL, NULL);\n\t\tif (ctx.env.authenticated) {\n\t\t\thtml(\u0022\u003c/td\u003e\u003ctd class\u003d'form'\u003e\u0022);\n\t\t\tprint_branch_combo_form();\n\t\t}\n\t} else\n\t\thtml_txt(ctx.cfg.root_title);\n\thtml(\u0022\u003c/td\u003e\u003c/tr\u003e\u005cn\u0022);\n\n\thtml(\u0022\u003ctr\u003e\u003ctd class\u003d'sub'\u003e\u0022);\n\tif (ctx.repo) {\n\t\tif (ctx.repo-\u003edesc \u0026\u0026\n\t\t (ctx.repo-\u003edesc !\u003d cgit_default_repo_desc ||\n\t\t !ctx.repo-\u003edesc_html))\n\t\t\thtml_txt(ctx.repo-\u003edesc);\n\t\tif (ctx.repo-\u003edesc_html)\n\t\t\thtml(ctx.repo-\u003edesc_html);\n\t\thtml(\u0022\u003c/td\u003e\u003ctd class\u003d'sub right'\u003e\u0022);\n\t\thtml_txt(ctx.repo-\u003eowner);\n\t} else {\n\t\tif (ctx.cfg.root_desc)\n\t\t\thtml_txt(ctx.cfg.root_desc);\n\t\tif (ctx.cfg.root_desc_html)\n\t\t\thtml(ctx.cfg.root_desc_html);\n\t}\n\thtml(\u0022\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u005cn\u0022);\n}\n\nvoid cgit_print_pageheader(void)\n{\n\thtml(\u0022\u003cdiv id\u003d'cgit'\u003e\u0022);\n\tif (!ctx.env.authenticated || !ctx.cfg.noheader)\n\t\tprint_header();\n\n\thtml(\u0022\u003ctable class\u003d'tabs'\u003e\u003ctr\u003e\u005cn\u0022);\n\tif (ctx.env.authenticated \u0026\u0026 ctx.repo) {\n\t\tif (ctx.cfg.noheader) {\n\t\t\thtml(\u0022\u003ctd class\u003d'form' style\u003d'text-align:left'\u003e\u0022);\n\t\t\tprint_branch_combo_form();\n\t\t\thtml(\u0022\u003c/td\u003e\u003ctd style\u003d'text-align:center'\u003e\u0022);\n\t\t}\n\t\thtml(\u0022\u003ctd\u003e\u0022);\n\n\t\tcgit_summary_link(\u0022summary\u0022, NULL, hc(\u0022summary\u0022),\n\t\t\t\t ctx.qry.head);\n\t\tcgit_refs_link(\u0022refs\u0022, NULL, hc(\u0022refs\u0022), ctx.qry.head,\n\t\t\t ctx.qry.sha1, NULL);\n\t\tcgit_log_link(\u0022log\u0022, NULL, hc(\u0022log\u0022), ctx.qry.head,\n\t\t\t NULL, ctx.qry.vpath, 0, NULL, NULL,\n\t\t\t ctx.qry.showmsg, ctx.qry.follow);\n\t\tif (ctx.qry.page \u0026\u0026 !strcmp(ctx.qry.page, \u0022blame\u0022))\n\t\t\tcgit_blame_link(\u0022blame\u0022, NULL, hc(\u0022blame\u0022), ctx.qry.head,\n\t\t\t\t ctx.qry.sha1, ctx.qry.vpath);\n\t\telse\n\t\t\tcgit_tree_link(\u0022tree\u0022, NULL, hc(\u0022tree\u0022), ctx.qry.head,\n\t\t\t\t ctx.qry.sha1, ctx.qry.vpath);\n\t\tcgit_commit_link(\u0022commit\u0022, NULL, hc(\u0022commit\u0022),\n\t\t\t\t ctx.qry.head, ctx.qry.sha1, ctx.qry.vpath);\n\t\tcgit_diff_link(\u0022diff\u0022, NULL, hc(\u0022diff\u0022), ctx.qry.head,\n\t\t\t ctx.qry.sha1, ctx.qry.sha2, ctx.qry.vpath);\n\t\tif (ctx.repo-\u003emax_stats)\n\t\t\tcgit_stats_link(\u0022stats\u0022, NULL, hc(\u0022stats\u0022),\n\t\t\t\t\tctx.qry.head, ctx.qry.vpath);\n\t\tif (ctx.repo-\u003ehomepage) {\n\t\t\thtml(\u0022\u003ca href\u003d'\u0022);\n\t\t\thtml_attr(ctx.repo-\u003ehomepage);\n\t\t\thtml(\u0022'\u003ehomepage\u003c/a\u003e\u0022);\n\t\t}\n\t\thtml(\u0022\u003c/td\u003e\u003ctd class\u003d'form'\u003e\u0022);\n\t\thtml(\u0022\u003cform class\u003d'right' method\u003d'get' action\u003d'\u0022);\n\t\tif (ctx.cfg.virtual_root) {\n\t\t\tchar *fileurl \u003d cgit_fileurl(ctx.qry.repo, \u0022log\u0022,\n\t\t\t\t\t\t ctx.qry.vpath, NULL);\n\t\t\thtml_url_path(fileurl);\n\t\t\tfree(fileurl);\n\t\t}\n\t\thtml(\u0022'\u003e\u005cn\u0022);\n\t\tcgit_add_hidden_formfields(1, 0, \u0022log\u0022);\n\t\thtml(\u0022\u003cselect name\u003d'qt'\u003e\u005cn\u0022);\n\t\thtml_option(\u0022grep\u0022, \u0022log msg\u0022, ctx.qry.grep);\n\t\thtml_option(\u0022author\u0022, \u0022author\u0022, ctx.qry.grep);\n\t\thtml_option(\u0022committer\u0022, \u0022committer\u0022, ctx.qry.grep);\n\t\thtml_option(\u0022range\u0022, \u0022range\u0022, ctx.qry.grep);\n\t\thtml(\u0022\u003c/select\u003e\u005cn\u0022);\n\t\thtml(\u0022\u003cinput class\u003d'txt' type\u003d'search' size\u003d'10' name\u003d'q' value\u003d'\u0022);\n\t\thtml_attr(ctx.qry.search);\n\t\thtml(\u0022'/\u003e\u005cn\u0022);\n\t\thtml(\u0022\u003cinput type\u003d'submit' value\u003d'search'/\u003e\u005cn\u0022);\n\t\thtml(\u0022\u003c/form\u003e\u005cn\u0022);\n\t} else if (ctx.env.authenticated) {\n\t\tchar *currenturl \u003d cgit_currenturl();\n\n\t\thtml(\u0022\u003ctd\u003e\u0022);\n\t\tsite_link(NULL, \u0022index\u0022, NULL, hc(\u0022repolist\u0022), NULL, NULL, 0, 1);\n\t\thtml(\u0022\u003c/td\u003e\u003ctd class\u003d'form'\u003e\u0022);\n\t\thtml(\u0022\u003cform method\u003d'get' action\u003d'\u0022);\n\t\thtml_attr(currenturl);\n\t\thtml(\u0022'\u003e\u005cn\u0022);\n\t\thtml(\u0022\u003cinput type\u003d'search' name\u003d'q' size\u003d'10' value\u003d'\u0022);\n\t\thtml_attr(ctx.qry.search);\n\t\thtml(\u0022'/\u003e\u005cn\u0022);\n\t\thtml(\u0022\u003cinput type\u003d'submit' value\u003d'search'/\u003e\u005cn\u0022);\n\t\thtml(\u0022\u003c/form\u003e\u0022);\n\t\tfree(currenturl);\n\t}\n\thtml(\u0022\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u005cn\u0022);\n\tif (ctx.env.authenticated \u0026\u0026 ctx.repo \u0026\u0026 ctx.qry.vpath) {\n\t\thtml(\u0022\u003cdiv class\u003d'path'\u003e\u0022);\n\t\thtml(\u0022path: \u0022);\n\t\tcgit_print_path_crumbs(ctx.qry.vpath);\n\t\tif (ctx.cfg.enable_follow_links \u0026\u0026 !strcmp(ctx.qry.page, \u0022log\u0022)) {\n\t\t\thtml(\u0022 (\u0022);\n\t\t\tctx.qry.follow \u003d !ctx.qry.follow;\n\t\t\tcgit_self_link(ctx.qry.follow ? \u0022follow\u0022 : \u0022unfollow\u0022,\n\t\t\t\t\tNULL, NULL);\n\t\t\tctx.qry.follow \u003d !ctx.qry.follow;\n\t\t\thtml(\u0022)\u0022);\n\t\t}\n\t\thtml(\u0022\u003c/div\u003e\u0022);\n\t}\n\thtml(\u0022\u003cdiv class\u003d'content'\u003e\u0022);\n}\n\nvoid cgit_print_filemode(unsigned short mode)\n{\n\tif (S_ISDIR(mode))\n\t\thtml(\u0022d\u0022);\n\telse if (S_ISLNK(mode))\n\t\thtml(\u0022l\u0022);\n\telse if (S_ISGITLINK(mode))\n\t\thtml(\u0022m\u0022);\n\telse\n\t\thtml(\u0022-\u0022);\n\thtml_fileperm(mode \u003e\u003e 6);\n\thtml_fileperm(mode \u003e\u003e 3);\n\thtml_fileperm(mode);\n}\n\nvoid cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,\n\t\t\t\t const char *ref)\n{\n\tstruct object_id oid;\n\n\t/*\n\t * Prettify snapshot names by stripping leading \u0022v\u0022 or \u0022V\u0022 if the tag\n\t * name starts with {v,V}[0-9] and the prettify mapping is injective,\n\t * i.e. each stripped tag can be inverted without ambiguities.\n\t */\n\tif (get_oid(fmt(\u0022refs/tags/%s\u0022, ref), \u0026oid) \u003d\u003d 0 \u0026\u0026\n\t (ref[0] \u003d\u003d 'v' || ref[0] \u003d\u003d 'V') \u0026\u0026 isdigit(ref[1]) \u0026\u0026\n\t ((get_oid(fmt(\u0022refs/tags/%s\u0022, ref + 1), \u0026oid) \u003d\u003d 0) +\n\t (get_oid(fmt(\u0022refs/tags/v%s\u0022, ref + 1), \u0026oid) \u003d\u003d 0) +\n\t (get_oid(fmt(\u0022refs/tags/V%s\u0022, ref + 1), \u0026oid) \u003d\u003d 0) \u003d\u003d 1))\n\t\tref++;\n\n\tstrbuf_addf(filename, \u0022%s-%s\u0022, base, ref);\n}\n\nvoid cgit_print_snapshot_links(const struct cgit_repo *repo, const char *ref,\n\t\t\t const char *separator)\n{\n\tconst struct cgit_snapshot_format* f;\n\tstruct strbuf filename \u003d STRBUF_INIT;\n\tconst char *basename;\n\tsize_t prefixlen;\n\n\tbasename \u003d cgit_snapshot_prefix(repo);\n\tif (starts_with(ref, basename))\n\t\tstrbuf_addstr(\u0026filename, ref);\n\telse\n\t\tcgit_compose_snapshot_prefix(\u0026filename, basename, ref);\n\n\tprefixlen \u003d filename.len;\n\tfor (f \u003d cgit_snapshot_formats; f-\u003esuffix; f++) {\n\t\tif (!(repo-\u003esnapshots \u0026 cgit_snapshot_format_bit(f)))\n\t\t\tcontinue;\n\t\tstrbuf_setlen(\u0026filename, prefixlen);\n\t\tstrbuf_addstr(\u0026filename, f-\u003esuffix);\n\t\tcgit_snapshot_link(filename.buf, NULL, NULL, NULL, NULL,\n\t\t\t\t filename.buf);\n\t\tif (cgit_snapshot_get_sig(ref, f)) {\n\t\t\tstrbuf_addstr(\u0026filename, \u0022.asc\u0022);\n\t\t\thtml(\u0022 (\u0022);\n\t\t\tcgit_snapshot_link(\u0022sig\u0022, NULL, NULL, NULL, NULL,\n\t\t\t\t\t filename.buf);\n\t\t\thtml(\u0022)\u0022);\n\t\t}\n\t\thtml(separator);\n\t}\n\tstrbuf_release(\u0026filename);\n}\n\nvoid cgit_set_title_from_path(const char *path)\n{\n\tsize_t path_len, path_index, path_last_end;\n\tchar *new_title;\n\n\tif (!path)\n\t\treturn;\n\n\tpath_len \u003d strlen(path);\n\tnew_title \u003d xmalloc(path_len + 3 + strlen(ctx.page.title) + 1);\n\tnew_title[0] \u003d '\u005c0';\n\n\tfor (path_index \u003d path_len, path_last_end \u003d path_len; path_index-- \u003e 0;) {\n\t\tif (path[path_index] \u003d\u003d '/') {\n\t\t\tif (path_index \u003d\u003d path_len - 1) {\n\t\t\t\tpath_last_end \u003d path_index - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tstrncat(new_title, \u0026path[path_index + 1], path_last_end - path_index - 1);\n\t\t\tstrcat(new_title, \u0022\u005c\u005c\u0022);\n\t\t\tpath_last_end \u003d path_index;\n\t\t}\n\t}\n\tif (path_last_end)\n\t\tstrncat(new_title, path, path_last_end);\n\n\tstrcat(new_title, \u0022 - \u0022);\n\tstrcat(new_title, ctx.page.title);\n\tctx.page.title \u003d new_title;\n}\n","s":{"c":1713473432,"u": 10006}} ,{"schema":"libjg2-1", "cid":"62c68e44aa961be1d6a4b5c3af160f72", "oid":{ "oid": "d1bb699526842f656f7afa799431003ab285dac2", "alias": [ "refs/heads/decruft","refs/heads/master"]},"blame": [ {"ord":0,"orig_oid":{ "oid": "5a106eb09b9b5e189b96cc736046a92b054f6c7f", "alias": []}, "final_oid":{ "oid": "5a106eb09b9b5e189b96cc736046a92b054f6c7f", "alias": []}, "sig_orig": { "git_time": { "time": 1165851510, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Move common output-functions into ui-shared.c", "sig_final": { "git_time": { "time": 1165851510, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Move common output-functions into ui-shared.c", "ranges": [ {"l": 2,"o": 1,"f": 1}, {"l": 6,"o": 4,"f": 4}, {"l": 1,"o": 10,"f": 14}, {"l": 3,"o": 14,"f": 17}, {"l": 1,"o": 18,"f": 21}, {"l": 1,"o": 20,"f": 23}, {"l": 2,"o": 22,"f": 25}, {"l": 3,"o": 25,"f": 28}, {"l": 1,"o": 37,"f": 32}, {"l": 1,"o": 38,"f": 42}, {"l": 2,"o": 40,"f": 46}, {"l": 1,"o": 43,"f": 723}, {"l": 1,"o": 48,"f": 747}, {"l": 1,"o": 49,"f": 800}, {"l": 2,"o": 51,"f": 802}, {"l": 1,"o": 54,"f": 805}, {"l": 2,"o": 59,"f": 841}, {"l": 2,"o": 61,"f": 846}, {"l": 1,"o": 64,"f": 849}, {"l": 2,"o": 66,"f": 959}, {"l": 1,"o": 69,"f": 1004}, {"l": 1,"o": 76,"f": 1154}]}, {"ord":1,"orig_oid":{ "oid": "74620f12e4f7e91cb0a0b4ca731e07272d1b65f6", "alias": []}, "final_oid":{ "oid": "74620f12e4f7e91cb0a0b4ca731e07272d1b65f6", "alias": []}, "sig_orig": { "git_time": { "time": 1165852083, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Move functions for repolist output into ui-repolist.c", "sig_final": { "git_time": { "time": 1165852083, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Move functions for repolist output into ui-repolist.c", "ranges": [ {"l": 1,"o": 42,"f": 48}, {"l": 2,"o": 43,"f": 96}, {"l": 2,"o": 50,"f": 102}, {"l": 1,"o": 54,"f": 106}, {"l": 1,"o": 58,"f": 114}, {"l": 1,"o": 60,"f": 118}, {"l": 2,"o": 61,"f": 122}]}, {"ord":2,"orig_oid":{ "oid": "148fb9622c6a96021e572d1a372e38896506031f", "alias": []}, "final_oid":{ "oid": "148fb9622c6a96021e572d1a372e38896506031f", "alias": []}, "sig_orig": { "git_time": { "time": 1166225608, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Move cgit_print_date into ui-shared, reuse in ui-summary", "sig_final": { "git_time": { "time": 1166225608, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Move cgit_print_date into ui-shared, reuse in ui-summary", "ranges": [ {"l": 1,"o": 63,"f": 328}]}, {"ord":3,"orig_oid":{ "oid": "e39d738c39d37cdef115c145027f3eec85a62272", "alias": []}, "final_oid":{ "oid": "e39d738c39d37cdef115c145027f3eec85a62272", "alias": []}, "sig_orig": { "git_time": { "time": 1167267709, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add generic support for search box in page header", "sig_final": { "git_time": { "time": 1167267709, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add generic support for search box in page header", "ranges": [ {"l": 1,"o": 132,"f": 1137}]}, {"ord":4,"orig_oid":{ "oid": "ab2ab95f09994560f62fd631f07d3b6e3577aa6e", "alias": []}, "final_oid":{ "oid": "ab2ab95f09994560f62fd631f07d3b6e3577aa6e", "alias": []}, "sig_orig": { "git_time": { "time": 1170939193, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add support for snapshots", "sig_final": { "git_time": { "time": 1170939193, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add support for snapshots", "ranges": [ {"l": 1,"o": 147,"f": 1155}]}, {"ord":5,"orig_oid":{ "oid": "66cacd053ba900c8eb3b7962027370c84a97f990", "alias": []}, "final_oid":{ "oid": "66cacd053ba900c8eb3b7962027370c84a97f990", "alias": []}, "sig_orig": { "git_time": { "time": 1171716378, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Layout update", "sig_final": { "git_time": { "time": 1171716378, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Layout update", "ranges": [ {"l": 1,"o": 44,"f": 81}, {"l": 1,"o": 47,"f": 84}, {"l": 2,"o": 49,"f": 86}]}, {"ord":6,"orig_oid":{ "oid": "6fb7d09fea94b3dd6932469283358cb24f1e7e29", "alias": []}, "final_oid":{ "oid": "6fb7d09fea94b3dd6932469283358cb24f1e7e29", "alias": []}, "sig_orig": { "git_time": { "time": 1179181323, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared.c: fix whitespace breakage", "sig_final": { "git_time": { "time": 1179181323, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared.c: fix whitespace breakage", "ranges": [ {"l": 1,"o": 17,"f": 20}, {"l": 1,"o": 19,"f": 22}]}, {"ord":7,"orig_oid":{ "oid": "5db39170b6c979655a0238dcd627e206febed88b", "alias": []}, "final_oid":{ "oid": "5db39170b6c979655a0238dcd627e206febed88b", "alias": []}, "sig_orig": { "git_time": { "time": 1179868126, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add cgit_print_age() function", "sig_final": { "git_time": { "time": 1179868126, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add cgit_print_age() function", "ranges": [ {"l": 3,"o": 102,"f": 680}, {"l": 2,"o": 105,"f": 685}, {"l": 2,"o": 107,"f": 689}, {"l": 4,"o": 110,"f": 696}, {"l": 3,"o": 116,"f": 701}, {"l": 3,"o": 121,"f": 705}, {"l": 3,"o": 126,"f": 709}, {"l": 3,"o": 131,"f": 713}, {"l": 2,"o": 136,"f": 717}, {"l": 2,"o": 140,"f": 720}]}, {"ord":8,"orig_oid":{ "oid": "44947bfcdc0d6e8c7d673bea0538cbf2a182f289", "alias": []}, "final_oid":{ "oid": "44947bfcdc0d6e8c7d673bea0538cbf2a182f289", "alias": []}, "sig_orig": { "git_time": { "time": 1182036188, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add and use cgit_tree_link()", "sig_final": { "git_time": { "time": 1182036188, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add and use cgit_tree_link()", "ranges": [ {"l": 15,"o": 92,"f": 263}, {"l": 1,"o": 113,"f": 282}, {"l": 1,"o": 118,"f": 289}, {"l": 1,"o": 120,"f": 291}, {"l": 1,"o": 123,"f": 294}, {"l": 2,"o": 128,"f": 301}, {"l": 2,"o": 131,"f": 304}, {"l": 5,"o": 134,"f": 307}, {"l": 3,"o": 141,"f": 315}, {"l": 2,"o": 146,"f": 320}, {"l": 5,"o": 149,"f": 323}]}, {"ord":9,"orig_oid":{ "oid": "48c487d72daef7e71683a85f775db8d36ab20341", "alias": []}, "final_oid":{ "oid": "48c487d72daef7e71683a85f775db8d36ab20341", "alias": []}, "sig_orig": { "git_time": { "time": 1182081471, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add git_log_link() and fix bug in generic repolink function", "sig_final": { "git_time": { "time": 1182081471, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add git_log_link() and fix bug in generic repolink function", "ranges": [ {"l": 1,"o": 144,"f": 318}, {"l": 4,"o": 157,"f": 343}, {"l": 1,"o": 163,"f": 363}, {"l": 2,"o": 165,"f": 400}]}, {"ord":10,"orig_oid":{ "oid": "42a7eb9c73457319a3fd5441ff26046fc9b31dad", "alias": []}, "final_oid":{ "oid": "42a7eb9c73457319a3fd5441ff26046fc9b31dad", "alias": []}, "sig_orig": { "git_time": { "time": 1182084782, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add cgit_commit_link() + support for id\u003dsha1 to commit view", "sig_final": { "git_time": { "time": 1182084782, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add cgit_commit_link() + support for id\u003dsha1 to commit view", "ranges": [ {"l": 1,"o": 169,"f": 404}, {"l": 2,"o": 177,"f": 444}]}, {"ord":11,"orig_oid":{ "oid": "4a0be586662843382ecfa53af34a13b291312bc0", "alias": []}, "final_oid":{ "oid": "4a0be586662843382ecfa53af34a13b291312bc0", "alias": []}, "sig_orig": { "git_time": { "time": 1182096723, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add cgit_diff_link()", "sig_final": { "git_time": { "time": 1182096723, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add cgit_diff_link()", "ranges": [ {"l": 4,"o": 181,"f": 462}, {"l": 2,"o": 186,"f": 467}, {"l": 5,"o": 189,"f": 470}, {"l": 1,"o": 195,"f": 488}, {"l": 5,"o": 196,"f": 498}]}, {"ord":12,"orig_oid":{ "oid": "b8be028a309381b83abe924f5e8e01cf02b121a2", "alias": []}, "final_oid":{ "oid": "b8be028a309381b83abe924f5e8e01cf02b121a2", "alias": []}, "sig_orig": { "git_time": { "time": 1182118722, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add more menuitems on repo pages", "sig_final": { "git_time": { "time": 1182118722, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add more menuitems on repo pages", "ranges": [ {"l": 1,"o": 114,"f": 283}, {"l": 2,"o": 116,"f": 285}, {"l": 1,"o": 119,"f": 288}, {"l": 1,"o": 126,"f": 295}, {"l": 2,"o": 128,"f": 297}, {"l": 1,"o": 131,"f": 300}]}, {"ord":13,"orig_oid":{ "oid": "f69250358a74efa5d7d9c562b2cdd80fad1430f1", "alias": []}, "final_oid":{ "oid": "f69250358a74efa5d7d9c562b2cdd80fad1430f1", "alias": []}, "sig_orig": { "git_time": { "time": 1182152530, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add version info from git-describe", "sig_final": { "git_time": { "time": 1182152530, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add version info from git-describe", "ranges": [ {"l": 1,"o": 265,"f": 806}]}, {"ord":14,"orig_oid":{ "oid": "103940fe6b0914dc42b8b033d1d328f38135ca5f", "alias": []}, "final_oid":{ "oid": "103940fe6b0914dc42b8b033d1d328f38135ca5f", "alias": []}, "sig_orig": { "git_time": { "time": 1183141661, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add ofs argument to cgit_log_link and use it in ui-log.c", "sig_final": { "git_time": { "time": 1183141661, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add ofs argument to cgit_log_link and use it in ui-log.c", "ranges": [ {"l": 3,"o": 168,"f": 364}, {"l": 2,"o": 172,"f": 368}, {"l": 1,"o": 176,"f": 372}, {"l": 4,"o": 177,"f": 382}, {"l": 4,"o": 181,"f": 396}]}, {"ord":15,"orig_oid":{ "oid": "0df096f6e146187e55e2203ea1c017442cc2c8c6", "alias": []}, "final_oid":{ "oid": "0df096f6e146187e55e2203ea1c017442cc2c8c6", "alias": []}, "sig_orig": { "git_time": { "time": 1185016420, "offset": 120 }, "name": "Michael Krelin", "email": "hacker@klever.net", "md5": "96e6a2a376fd5c88e7453a5f17728cb2" }, "log_orig": "added snapshot filename to the link", "sig_final": { "git_time": { "time": 1185016420, "offset": 120 }, "name": "Michael Krelin", "email": "hacker@klever.net", "md5": "96e6a2a376fd5c88e7453a5f17728cb2" }, "log_final": "added snapshot filename to the link", "ranges": [ {"l": 2,"o": 60,"f": 104}, {"l": 3,"o": 78,"f": 124}, {"l": 2,"o": 82,"f": 128}, {"l": 1,"o": 84,"f": 158}]}, {"ord":16,"orig_oid":{ "oid": "1cb8bedf1e0a4aa73bb8ad3f96bfa7eda50919b3", "alias": []}, "final_oid":{ "oid": "1cb8bedf1e0a4aa73bb8ad3f96bfa7eda50919b3", "alias": []}, "sig_orig": { "git_time": { "time": 1185024247, "offset": 120 }, "name": "Michael Krelin", "email": "hacker@klever.net", "md5": "96e6a2a376fd5c88e7453a5f17728cb2" }, "log_orig": "introduce cgit_repobasename", "sig_final": { "git_time": { "time": 1185024247, "offset": 120 }, "name": "Michael Krelin", "email": "hacker@klever.net", "md5": "96e6a2a376fd5c88e7453a5f17728cb2" }, "log_final": "introduce cgit_repobasename", "ranges": [ {"l": 1,"o": 85,"f": 132}, {"l": 1,"o": 107,"f": 157}]}, {"ord":17,"orig_oid":{ "oid": "4e9107abfe8d3edff17826875b417bcf40dc7390", "alias": []}, "final_oid":{ "oid": "4e9107abfe8d3edff17826875b417bcf40dc7390", "alias": []}, "sig_orig": { "git_time": { "time": 1185140575, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add ui-tag.c", "sig_final": { "git_time": { "time": 1185140575, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add ui-tag.c", "ranges": [ {"l": 2,"o": 221,"f": 577}, {"l": 1,"o": 224,"f": 580}, {"l": 1,"o": 225,"f": 584}, {"l": 1,"o": 228,"f": 587}, {"l": 1,"o": 230,"f": 589}, {"l": 1,"o": 233,"f": 593}, {"l": 2,"o": 243,"f": 596}]}, {"ord":18,"orig_oid":{ "oid": "eb45342e735818b3c68cbab9b61b23e79ae74418", "alias": []}, "final_oid":{ "oid": "eb45342e735818b3c68cbab9b61b23e79ae74418", "alias": []}, "sig_orig": { "git_time": { "time": 1185142275, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "cgit_print_snapshot_links: use url to specify snapshot name", "sig_final": { "git_time": { "time": 1185142275, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "cgit_print_snapshot_links: use url to specify snapshot name", "ranges": [ {"l": 4,"o": 232,"f": 455}]}, {"ord":19,"orig_oid":{ "oid": "ac1f493b6bbc589327e9ba3303f112fcd323c6b6", "alias": []}, "final_oid":{ "oid": "ac1f493b6bbc589327e9ba3303f112fcd323c6b6", "alias": []}, "sig_orig": { "git_time": { "time": 1193474864, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add links to the new refs page from summary page", "sig_final": { "git_time": { "time": 1193474864, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add links to the new refs page from summary page", "ranges": [ {"l": 4,"o": 232,"f": 448}]}, {"ord":20,"orig_oid":{ "oid": "fc5880fab8b9afc589aaadd1299c34a6ef2a3c2d", "alias": []}, "final_oid":{ "oid": "fc5880fab8b9afc589aaadd1299c34a6ef2a3c2d", "alias": []}, "sig_orig": { "git_time": { "time": 1193582447, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Teach cgit_object_link() about tag objects", "sig_final": { "git_time": { "time": 1193582447, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Teach cgit_object_link() about tag objects", "ranges": [ {"l": 1,"o": 276,"f": 591}]}, {"ord":21,"orig_oid":{ "oid": "0c8e184e9cbf4d3a1e907de9125f6d8210c169d6", "alias": []}, "final_oid":{ "oid": "0c8e184e9cbf4d3a1e907de9125f6d8210c169d6", "alias": []}, "sig_orig": { "git_time": { "time": 1193737658, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Change the cgit layout", "sig_final": { "git_time": { "time": 1193737658, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Change the cgit layout", "ranges": [ {"l": 2,"o": 366,"f": 869}, {"l": 2,"o": 370,"f": 923}, {"l": 3,"o": 373,"f": 926}, {"l": 1,"o": 416,"f": 931}, {"l": 2,"o": 422,"f": 940}, {"l": 1,"o": 426,"f": 945}, {"l": 2,"o": 431,"f": 952}, {"l": 1,"o": 437,"f": 958}]}, {"ord":22,"orig_oid":{ "oid": "51140311bb3b0d4d0e859d5045ffe4c74478f5fe", "alias": []}, "final_oid":{ "oid": "51140311bb3b0d4d0e859d5045ffe4c74478f5fe", "alias": []}, "sig_orig": { "git_time": { "time": 1194082957, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add search parameters to cgit_log_link", "sig_final": { "git_time": { "time": 1194082957, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add search parameters to cgit_log_link", "ranges": [ {"l": 3,"o": 208,"f": 373}, {"l": 2,"o": 213,"f": 378}, {"l": 1,"o": 216,"f": 381}]}, {"ord":23,"orig_oid":{ "oid": "68cf9b4f853177544a5d1c7b4a9eea4d2f5749d5", "alias": []}, "final_oid":{ "oid": "68cf9b4f853177544a5d1c7b4a9eea4d2f5749d5", "alias": []}, "sig_orig": { "git_time": { "time": 1194084956, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Fix search form action/hidden fields", "sig_final": { "git_time": { "time": 1194084956, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Fix search form action/hidden fields", "ranges": [ {"l": 2,"o": 64,"f": 108}, {"l": 1,"o": 69,"f": 113}, {"l": 1,"o": 75,"f": 119}]}, {"ord":24,"orig_oid":{ "oid": "fc4c4ba3a99f4fe4bd8a42caca902269d2e0b678", "alias": []}, "final_oid":{ "oid": "fc4c4ba3a99f4fe4bd8a42caca902269d2e0b678", "alias": []}, "sig_orig": { "git_time": { "time": 1196629895, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Handle missing timestamp in commit/tag objects", "sig_final": { "git_time": { "time": 1196629895, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Handle missing timestamp in commit/tag objects", "ranges": [ {"l": 2,"o": 318,"f": 683}]}, {"ord":25,"orig_oid":{ "oid": "620bb3e5e4ff87da740fe7232ba74330b5f862d4", "alias": []}, "final_oid":{ "oid": "620bb3e5e4ff87da740fe7232ba74330b5f862d4", "alias": []}, "sig_orig": { "git_time": { "time": 1197319649, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add plain patch view", "sig_final": { "git_time": { "time": 1197319649, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add plain patch view", "ranges": [ {"l": 1,"o": 277,"f": 505}, {"l": 2,"o": 279,"f": 507}]}, {"ord":26,"orig_oid":{ "oid": "d14d77fe95c3b6224b40df9b101dded0deea913c", "alias": []}, "final_oid":{ "oid": "d14d77fe95c3b6224b40df9b101dded0deea913c", "alias": []}, "sig_orig": { "git_time": { "time": 1203159220, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Introduce struct cgit_context", "sig_final": { "git_time": { "time": 1203159220, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Introduce struct cgit_context", "ranges": [ {"l": 1,"o": 395,"f": 925}, {"l": 1,"o": 450,"f": 944}, {"l": 4,"o": 452,"f": 946}, {"l": 4,"o": 458,"f": 954}]}, {"ord":27,"orig_oid":{ "oid": "b228d4ff82a65fdcd4a7364759fe36a0bdda5978", "alias": []}, "final_oid":{ "oid": "b228d4ff82a65fdcd4a7364759fe36a0bdda5978", "alias": []}, "sig_orig": { "git_time": { "time": 1203163633, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add all config variables into struct cgit_context", "sig_final": { "git_time": { "time": 1203163633, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add all config variables into struct cgit_context", "ranges": [ {"l": 1,"o": 45,"f": 82}, {"l": 1,"o": 48,"f": 85}, {"l": 1,"o": 66,"f": 110}, {"l": 1,"o": 140,"f": 278}, {"l": 1,"o": 442,"f": 932}]}, {"ord":28,"orig_oid":{ "oid": "d1f3bbe9d22029f45a77bb938c176ccc0c827d46", "alias": []}, "final_oid":{ "oid": "d1f3bbe9d22029f45a77bb938c176ccc0c827d46", "alias": []}, "sig_orig": { "git_time": { "time": 1203166569, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Move cgit_repo into cgit_context", "sig_final": { "git_time": { "time": 1203166569, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Move cgit_repo into cgit_context", "ranges": [ {"l": 1,"o": 145,"f": 281}, {"l": 1,"o": 157,"f": 293}]}, {"ord":29,"orig_oid":{ "oid": "b1f9b9c1459cb9a30ebf80721aff6ef788d1f891", "alias": []}, "final_oid":{ "oid": "b1f9b9c1459cb9a30ebf80721aff6ef788d1f891", "alias": []}, "sig_orig": { "git_time": { "time": 1203803133, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Introduce html.h", "sig_final": { "git_time": { "time": 1203803133, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Introduce html.h", "ranges": [ {"l": 1,"o": 10,"f": 12}, {"l": 15,"o": 571,"f": 1156}]}, {"ord":30,"orig_oid":{ "oid": "f3c1a187fe2bc33f8423cd535d5045899699995b", "alias": []}, "final_oid":{ "oid": "f3c1a187fe2bc33f8423cd535d5045899699995b", "alias": []}, "sig_orig": { "git_time": { "time": 1206316279, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add struct cgit_page to cgit_context", "sig_final": { "git_time": { "time": 1206316279, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add struct cgit_page to cgit_context", "ranges": [ {"l": 2,"o": 369,"f": 750}, {"l": 1,"o": 372,"f": 791}]}, {"ord":31,"orig_oid":{ "oid": "f34478cbe0214a201e7ecef3e79ed6c957b7beee", "alias": []}, "final_oid":{ "oid": "f34478cbe0214a201e7ecef3e79ed6c957b7beee", "alias": []}, "sig_orig": { "git_time": { "time": 1206370827, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Refactor snapshot support", "sig_final": { "git_time": { "time": 1206370827, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Refactor snapshot support", "ranges": [ {"l": 2,"o": 578,"f": 1193}, {"l": 1,"o": 581,"f": 1198}, {"l": 1,"o": 582,"f": 1206}, {"l": 1,"o": 584,"f": 1208}, {"l": 1,"o": 590,"f": 1221}, {"l": 1,"o": 591,"f": 1223}]}, {"ord":32,"orig_oid":{ "oid": "f135569b2be3fb1816f802f9a162b3743b735d1c", "alias": []}, "final_oid":{ "oid": "f135569b2be3fb1816f802f9a162b3743b735d1c", "alias": []}, "sig_orig": { "git_time": { "time": 1208008411, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Replace sidebar/logo", "sig_final": { "git_time": { "time": 1208008411, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Replace sidebar/logo", "ranges": [ {"l": 1,"o": 10,"f": 11}, {"l": 1,"o": 470,"f": 962}, {"l": 2,"o": 472,"f": 967}, {"l": 2,"o": 478,"f": 1007}, {"l": 1,"o": 485,"f": 1029}, {"l": 1,"o": 498,"f": 1066}, {"l": 1,"o": 520,"f": 1138}, {"l": 1,"o": 521,"f": 1153}]}, {"ord":33,"orig_oid":{ "oid": "7c0d2d9fbd3a29d295c8067f7798507853759eae", "alias": []}, "final_oid":{ "oid": "7c0d2d9fbd3a29d295c8067f7798507853759eae", "alias": []}, "sig_orig": { "git_time": { "time": 1208023181, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add fixed link to index page from repo header", "sig_final": { "git_time": { "time": 1208023181, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add fixed link to index page from repo header", "ranges": [ {"l": 1,"o": 494,"f": 1038}]}, {"ord":34,"orig_oid":{ "oid": "931fc6d1e4986a4566647dda16af09bf69a28b89", "alias": []}, "final_oid":{ "oid": "931fc6d1e4986a4566647dda16af09bf69a28b89", "alias": []}, "sig_orig": { "git_time": { "time": 1208077031, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "More layout fixes", "sig_final": { "git_time": { "time": 1208077031, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "More layout fixes", "ranges": [ {"l": 1,"o": 488,"f": 1028}, {"l": 1,"o": 511,"f": 1041}, {"l": 1,"o": 524,"f": 1057}, {"l": 2,"o": 546,"f": 1101}, {"l": 1,"o": 551,"f": 1109}, {"l": 1,"o": 553,"f": 1111}, {"l": 1,"o": 557,"f": 1116}, {"l": 3,"o": 560,"f": 1119}]}, {"ord":35,"orig_oid":{ "oid": "536b0541fcfea2169e4df33043cd9ff14c657bce", "alias": []}, "final_oid":{ "oid": "536b0541fcfea2169e4df33043cd9ff14c657bce", "alias": []}, "sig_orig": { "git_time": { "time": 1208080630, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Implement minimal freetext search in the repolist", "sig_final": { "git_time": { "time": 1208080630, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Implement minimal freetext search in the repolist", "ranges": [ {"l": 2,"o": 567,"f": 1127}, {"l": 1,"o": 570,"f": 1130}, {"l": 3,"o": 573,"f": 1133}]}, {"ord":36,"orig_oid":{ "oid": "3cfcb086abfc2e94426623b487a47a8b5cc57b7e", "alias": []}, "final_oid":{ "oid": "3cfcb086abfc2e94426623b487a47a8b5cc57b7e", "alias": []}, "sig_orig": { "git_time": { "time": 1208210411, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Cleanup page header", "sig_final": { "git_time": { "time": 1208210411, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Cleanup page header", "ranges": [ {"l": 1,"o": 505,"f": 1040}, {"l": 1,"o": 511,"f": 1052}, {"l": 1,"o": 515,"f": 1058}]}, {"ord":37,"orig_oid":{ "oid": "71adba1f1678914063fc109cf3805afde2c68f75", "alias": []}, "final_oid":{ "oid": "71adba1f1678914063fc109cf3805afde2c68f75", "alias": []}, "sig_orig": { "git_time": { "time": 1209424181, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add 'about site' and 'about repo' pages", "sig_final": { "git_time": { "time": 1209424181, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add 'about site' and 'about repo' pages", "ranges": [ {"l": 3,"o": 118,"f": 169}, {"l": 3,"o": 127,"f": 179}, {"l": 5,"o": 131,"f": 183}, {"l": 3,"o": 136,"f": 199}, {"l": 13,"o": 141,"f": 204}, {"l": 5,"o": 155,"f": 218}]}, {"ord":38,"orig_oid":{ "oid": "141f1c3eb657470e81bbf998f44f9723f9009def", "alias": []}, "final_oid":{ "oid": "141f1c3eb657470e81bbf998f44f9723f9009def", "alias": []}, "sig_orig": { "git_time": { "time": 1209803822, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add cgit_index_link() function with support for offset", "sig_final": { "git_time": { "time": 1209803822, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add cgit_index_link() function with support for offset", "ranges": [ {"l": 1,"o": 137,"f": 189}, {"l": 3,"o": 138,"f": 196}, {"l": 1,"o": 167,"f": 225}, {"l": 2,"o": 169,"f": 227}]}, {"ord":39,"orig_oid":{ "oid": "17890d0058c1555133c8767ceb123e809e6971ab", "alias": []}, "final_oid":{ "oid": "17890d0058c1555133c8767ceb123e809e6971ab", "alias": []}, "sig_orig": { "git_time": { "time": 1209811460, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add link to index page from repo header, remove page name", "sig_final": { "git_time": { "time": 1209811460, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add link to index page from repo header, remove page name", "ranges": [ {"l": 1,"o": 549,"f": 1032}]}, {"ord":40,"orig_oid":{ "oid": "b2a3d31e8839b53a623b4c99124c2c637d0e3cbb", "alias": []}, "final_oid":{ "oid": "b2a3d31e8839b53a623b4c99124c2c637d0e3cbb", "alias": []}, "sig_orig": { "git_time": { "time": 1211350674, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add atom-support", "sig_final": { "git_time": { "time": 1211350674, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add atom-support", "ranges": [ {"l": 1,"o": 38,"f": 58}, {"l": 2,"o": 50,"f": 66}, {"l": 1,"o": 470,"f": 836}]}, {"ord":41,"orig_oid":{ "oid": "de5e9281719809c5b07051faa88e95bd16e8d485", "alias": []}, "final_oid":{ "oid": "de5e9281719809c5b07051faa88e95bd16e8d485", "alias": []}, "sig_orig": { "git_time": { "time": 1214481210, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add support for including a footer on all pages", "sig_final": { "git_time": { "time": 1214481210, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add support for including a footer on all pages", "ranges": [ {"l": 3,"o": 447,"f": 857}, {"l": 1,"o": 454,"f": 866}, {"l": 1,"o": 455,"f": 868}]}, {"ord":42,"orig_oid":{ "oid": "502865a5ec40fed5f1f865cb34002aecaab8405e", "alias": []}, "final_oid":{ "oid": "502865a5ec40fed5f1f865cb34002aecaab8405e", "alias": []}, "sig_orig": { "git_time": { "time": 1216492830, "offset": 120 }, "name": "Lars Hjemli", "email": "larsh@hatman.(none)", "md5": "675b21cf3bb7e97a59617f255fcccff0" }, "log_orig": "Add a favicon option to cgitrc", "sig_final": { "git_time": { "time": 1216492830, "offset": 120 }, "name": "Lars Hjemli", "email": "larsh@hatman.(none)", "md5": "675b21cf3bb7e97a59617f255fcccff0" }, "log_final": "Add a favicon option to cgitrc", "ranges": [ {"l": 1,"o": 441,"f": 818}, {"l": 2,"o": 443,"f": 820}]}, {"ord":43,"orig_oid":{ "oid": "2d6ee032d0c2f84ebcfaa12d3289e85cfab18fcd", "alias": []}, "final_oid":{ "oid": "2d6ee032d0c2f84ebcfaa12d3289e85cfab18fcd", "alias": []}, "sig_orig": { "git_time": { "time": 1217154136, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: show repo owner along with description", "sig_final": { "git_time": { "time": 1217154136, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: show repo owner along with description", "ranges": [ {"l": 1,"o": 575,"f": 1042}, {"l": 1,"o": 578,"f": 1050}]}, {"ord":44,"orig_oid":{ "oid": "25c84326deff579d5de4b880f9dca2690bdc8569", "alias": []}, "final_oid":{ "oid": "25c84326deff579d5de4b880f9dca2690bdc8569", "alias": []}, "sig_orig": { "git_time": { "time": 1217154728, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Be prepared for empty repositories", "sig_final": { "git_time": { "time": 1217154728, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Be prepared for empty repositories", "ranges": [ {"l": 2,"o": 521,"f": 942}]}, {"ord":45,"orig_oid":{ "oid": "65b7b876aaaf50fc15060533359d6561f4f1819a", "alias": []}, "final_oid":{ "oid": "65b7b876aaaf50fc15060533359d6561f4f1819a", "alias": []}, "sig_orig": { "git_time": { "time": 1218013633, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-tree: link to plain view instead of blob view", "sig_final": { "git_time": { "time": 1218013633, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-tree: link to plain view instead of blob view", "ranges": [ {"l": 4,"o": 248,"f": 349}]}, {"ord":46,"orig_oid":{ "oid": "b575115d9d93e45cdbcd5d066cc445d34639ae6a", "alias": []}, "final_oid":{ "oid": "b575115d9d93e45cdbcd5d066cc445d34639ae6a", "alias": []}, "sig_orig": { "git_time": { "time": 1223203945, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared.c: use html_url_arg()", "sig_final": { "git_time": { "time": 1223203945, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared.c: use html_url_arg()", "ranges": [ {"l": 1,"o": 224,"f": 292}, {"l": 1,"o": 228,"f": 296}, {"l": 1,"o": 231,"f": 299}, {"l": 1,"o": 238,"f": 306}, {"l": 1,"o": 253,"f": 322}, {"l": 1,"o": 281,"f": 370}, {"l": 1,"o": 287,"f": 376}, {"l": 1,"o": 291,"f": 380}, {"l": 1,"o": 336,"f": 469}, {"l": 1,"o": 342,"f": 475}]}, {"ord":47,"orig_oid":{ "oid": "44b208aa44c4cdf7e1e339bbd5b028c23da55a46", "alias": []}, "final_oid":{ "oid": "44b208aa44c4cdf7e1e339bbd5b028c23da55a46", "alias": []}, "sig_orig": { "git_time": { "time": 1223218484, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared.c: use html_url_path() in repolink()", "sig_final": { "git_time": { "time": 1223218484, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared.c: use html_url_path() in repolink()", "ranges": [ {"l": 1,"o": 209,"f": 279}, {"l": 1,"o": 212,"f": 280}, {"l": 1,"o": 216,"f": 284}, {"l": 1,"o": 219,"f": 287}]}, {"ord":48,"orig_oid":{ "oid": "e9d3bd544fe94ba5ade9ccf185328fcc2414814b", "alias": []}, "final_oid":{ "oid": "e9d3bd544fe94ba5ade9ccf185328fcc2414814b", "alias": []}, "sig_orig": { "git_time": { "time": 1223218550, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared.c: add cgit_summary_link()", "sig_final": { "git_time": { "time": 1223218550, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared.c: add cgit_summary_link()", "ranges": [ {"l": 4,"o": 261,"f": 331}]}, {"ord":49,"orig_oid":{ "oid": "8b5fc6de036cf159ffa61a55158044749bd6f4d9", "alias": []}, "final_oid":{ "oid": "8b5fc6de036cf159ffa61a55158044749bd6f4d9", "alias": []}, "sig_orig": { "git_time": { "time": 1223233928, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: generate proper links in cgit_object_link()", "sig_final": { "git_time": { "time": 1223233928, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: generate proper links in cgit_object_link()", "ranges": [ {"l": 1,"o": 368,"f": 588}, {"l": 1,"o": 370,"f": 590}, {"l": 1,"o": 372,"f": 592}]}, {"ord":50,"orig_oid":{ "oid": "cf61ad411c41a774c9671651704bdeb78ccc1036", "alias": []}, "final_oid":{ "oid": "cf61ad411c41a774c9671651704bdeb78ccc1036", "alias": []}, "sig_orig": { "git_time": { "time": 1223234325, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: add cgit_tag_link()", "sig_final": { "git_time": { "time": 1223234325, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: add cgit_tag_link()", "ranges": [ {"l": 1,"o": 267,"f": 337}, {"l": 2,"o": 269,"f": 339}]}, {"ord":51,"orig_oid":{ "oid": "0274b57d55a12ed38259757dbfae96b79cfa2e0b", "alias": []}, "final_oid":{ "oid": "0274b57d55a12ed38259757dbfae96b79cfa2e0b", "alias": []}, "sig_orig": { "git_time": { "time": 1227980381, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-log: add support for showing the full commit message", "sig_final": { "git_time": { "time": 1227980381, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-log: add support for showing the full commit message", "ranges": [ {"l": 4,"o": 310,"f": 387}, {"l": 2,"o": 577,"f": 950}]}, {"ord":52,"orig_oid":{ "oid": "c57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2", "alias": []}, "final_oid":{ "oid": "c57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2", "alias": []}, "sig_orig": { "git_time": { "time": 1228165139, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: shorten the sha1 printed by cgit_object_link", "sig_final": { "git_time": { "time": 1228165139, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: shorten the sha1 printed by cgit_object_link", "ranges": [ {"l": 1,"o": 368,"f": 579}, {"l": 2,"o": 371,"f": 582}, {"l": 1,"o": 384,"f": 595}]}, {"ord":53,"orig_oid":{ "oid": "eaf2d25c162534efe7566119cf4b1cbeab217b51", "alias": []}, "final_oid":{ "oid": "eaf2d25c162534efe7566119cf4b1cbeab217b51", "alias": []}, "sig_orig": { "git_time": { "time": 1228653256, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: add and use cgit_stats_link()", "sig_final": { "git_time": { "time": 1228653256, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: add and use cgit_stats_link()", "ranges": [ {"l": 4,"o": 368,"f": 511}]}, {"ord":54,"orig_oid":{ "oid": "c3c925f4eca3e863bedaae4cfe237c3ad52092b6", "alias": []}, "final_oid":{ "oid": "c3c925f4eca3e863bedaae4cfe237c3ad52092b6", "alias": []}, "sig_orig": { "git_time": { "time": 1228661555, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: externalize add_hidden_formfields()", "sig_final": { "git_time": { "time": 1228661555, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: externalize add_hidden_formfields()", "ranges": [ {"l": 1,"o": 663,"f": 1110}]}, {"ord":55,"orig_oid":{ "oid": "0cbb50841ac82e08e715bbff614f96c7d5ba22fa", "alias": []}, "final_oid":{ "oid": "0cbb50841ac82e08e715bbff614f96c7d5ba22fa", "alias": []}, "sig_orig": { "git_time": { "time": 1232663636, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add support for an 'embedded' option in cgitrc", "sig_final": { "git_time": { "time": 1232663636, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add support for an 'embedded' option in cgitrc", "ranges": [ {"l": 2,"o": 460,"f": 725}, {"l": 1,"o": 480,"f": 797}, {"l": 1,"o": 481,"f": 799}]}, {"ord":56,"orig_oid":{ "oid": "3ff58ddd51bcbcbc9b7649bad1a39aa98af4b49f", "alias": []}, "final_oid":{ "oid": "3ff58ddd51bcbcbc9b7649bad1a39aa98af4b49f", "alias": []}, "sig_orig": { "git_time": { "time": 1235082255, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add support for HEAD requests", "sig_final": { "git_time": { "time": 1235082255, "offset": 60 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add support for HEAD requests", "ranges": [ {"l": 1,"o": 477,"f": 749}]}, {"ord":57,"orig_oid":{ "oid": "b5a3a2049648415e86d518a8bf2229b3e463b10f", "alias": []}, "final_oid":{ "oid": "b5a3a2049648415e86d518a8bf2229b3e463b10f", "alias": []}, "sig_orig": { "git_time": { "time": 1237090314, "offset": -240 }, "name": "Mark Lodato", "email": "lodatom@gmail.com", "md5": "2ba36f553521381741fcc3f87a48ba04" }, "log_orig": "Add head-include configuration option.", "sig_final": { "git_time": { "time": 1237090314, "offset": -240 }, "name": "Mark Lodato", "email": "lodatom@gmail.com", "md5": "2ba36f553521381741fcc3f87a48ba04" }, "log_final": "Add head-include configuration option.", "ranges": [ {"l": 1,"o": 499,"f": 833}]}, {"ord":58,"orig_oid":{ "oid": "87a89aed41136d388537b146000c4af6c1135a8c", "alias": []}, "final_oid":{ "oid": "87a89aed41136d388537b146000c4af6c1135a8c", "alias": []}, "sig_orig": { "git_time": { "time": 1244675395, "offset": -300 }, "name": "Diego Ongaro", "email": "ongardie@gmail.com", "md5": "056effcac7fca237926f57ba2450429a" }, "log_orig": "add cgit_httpscheme() -\u003e http:// or https://", "sig_final": { "git_time": { "time": 1244675395, "offset": -300 }, "name": "Diego Ongaro", "email": "ongardie@gmail.com", "md5": "056effcac7fca237926f57ba2450429a" }, "log_final": "add cgit_httpscheme() -\u003e http:// or https://", "ranges": [ {"l": 1,"o": 38,"f": 50}, {"l": 5,"o": 43,"f": 52}]}, {"ord":59,"orig_oid":{ "oid": "694dd43886f23723f415aed3afb62131cdbcaa51", "alias": []}, "final_oid":{ "oid": "694dd43886f23723f415aed3afb62131cdbcaa51", "alias": []}, "sig_orig": { "git_time": { "time": 1244675914, "offset": -300 }, "name": "Diego Ongaro", "email": "ongardie@gmail.com", "md5": "056effcac7fca237926f57ba2450429a" }, "log_orig": "use cgit_httpscheme() for atom feed", "sig_final": { "git_time": { "time": 1244675914, "offset": -300 }, "name": "Diego Ongaro", "email": "ongardie@gmail.com", "md5": "056effcac7fca237926f57ba2450429a" }, "log_final": "use cgit_httpscheme() for atom feed", "ranges": [ {"l": 2,"o": 506,"f": 827}]}, {"ord":60,"orig_oid":{ "oid": "6421dc38db02eff8d3ada93e87a2f7e5292af131", "alias": []}, "final_oid":{ "oid": "6421dc38db02eff8d3ada93e87a2f7e5292af131", "alias": []}, "sig_orig": { "git_time": { "time": 1246325271, "offset": -240 }, "name": "Matthew Metnetsky", "email": "mimetnet@vidu.us", "md5": "e627ca9309b37a2c4514c201114b359d" }, "log_orig": "ui-shared: don't print header \u003cimg/\u003e if there isn't a logo defined", "sig_final": { "git_time": { "time": 1246325271, "offset": -240 }, "name": "Matthew Metnetsky", "email": "mimetnet@vidu.us", "md5": "e627ca9309b37a2c4514c201114b359d" }, "log_final": "ui-shared: don't print header \u003cimg/\u003e if there isn't a logo defined", "ranges": [ {"l": 1,"o": 614,"f": 1009}, {"l": 1,"o": 616,"f": 1019}, {"l": 3,"o": 619,"f": 1022}, {"l": 2,"o": 623,"f": 1026}]}, {"ord":61,"orig_oid":{ "oid": "ef0c6aadf70e33ef63f0a68ca16338a49d0a3f1f", "alias": []}, "final_oid":{ "oid": "ef0c6aadf70e33ef63f0a68ca16338a49d0a3f1f", "alias": []}, "sig_orig": { "git_time": { "time": 1248517171, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Add support for 'noheader' option", "sig_final": { "git_time": { "time": 1248517171, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Add support for 'noheader' option", "ranges": [ {"l": 2,"o": 656,"f": 1059}, {"l": 1,"o": 659,"f": 1062}, {"l": 1,"o": 665,"f": 1063}]}, {"ord":62,"orig_oid":{ "oid": "60a26272e0ca529407fe6b613f061f04ba585d53", "alias": []}, "final_oid":{ "oid": "60a26272e0ca529407fe6b613f061f04ba585d53", "alias": []}, "sig_orig": { "git_time": { "time": 1249885269, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "Cleanup handling of environment variables", "sig_final": { "git_time": { "time": 1249885269, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "Cleanup handling of environment variables", "ranges": [ {"l": 1,"o": 39,"f": 51}, {"l": 1,"o": 47,"f": 59}, {"l": 3,"o": 49,"f": 61}]}, {"ord":63,"orig_oid":{ "oid": "80550bbe028b551550395653d32a0ba50db540ef", "alias": []}, "final_oid":{ "oid": "80550bbe028b551550395653d32a0ba50db540ef", "alias": []}, "sig_orig": { "git_time": { "time": 1249978355, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-shared: add support for header/footer options when embedded\u003d1", "sig_final": { "git_time": { "time": 1249978355, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-shared: add support for header/footer options when embedded\u003d1", "ranges": [ {"l": 1,"o": 488,"f": 798}, {"l": 7,"o": 526,"f": 850}, {"l": 1,"o": 541,"f": 867}]}, {"ord":64,"orig_oid":{ "oid": "c358aa3dfebf4fc1f3005dd960aa5c1c020eed76", "alias": []}, "final_oid":{ "oid": "c358aa3dfebf4fc1f3005dd960aa5c1c020eed76", "alias": []}, "sig_orig": { "git_time": { "time": 1252952342, "offset": 120 }, "name": "Ragnar Ouchterlony", "email": "ragnar@lysator.liu.se", "md5": "d9021075b016923822353d13dd1f14cd" }, "log_orig": "Add possibility to switch between unidiff and side-by-side-diff.", "sig_final": { "git_time": { "time": 1252952342, "offset": 120 }, "name": "Ragnar Ouchterlony", "email": "ragnar@lysator.liu.se", "md5": "d9021075b016923822353d13dd1f14cd" }, "log_final": "Add possibility to switch between unidiff and side-by-side-diff.", "ranges": [ {"l": 5,"o": 333,"f": 409}, {"l": 1,"o": 339,"f": 415}, {"l": 1,"o": 341,"f": 424}, {"l": 1,"o": 342,"f": 434}, {"l": 1,"o": 344,"f": 443}, {"l": 2,"o": 376,"f": 476}, {"l": 1,"o": 379,"f": 479}]}, {"ord":65,"orig_oid":{ "oid": "e34a3b5adc00255f8acb7d674e5fdadef2ac80f7", "alias": []}, "final_oid":{ "oid": "e34a3b5adc00255f8acb7d674e5fdadef2ac80f7", "alias": []}, "sig_orig": { "git_time": { "time": 1257196204, "offset": 60 }, "name": "Danijel Tašov", "email": "dt@korn.shell.la", "md5": "02d18fd1eb2005b469ee217ae9a1da93" }, "log_orig": "Nov is the correct abbreviation", "sig_final": { "git_time": { "time": 1257196204, "offset": 60 }, "name": "Danijel Tašov", "email": "dt@korn.shell.la", "md5": "02d18fd1eb2005b469ee217ae9a1da93" }, "log_final": "Nov is the correct abbreviation", "ranges": [ {"l": 1,"o": 23,"f": 24}]}, {"ord":66,"orig_oid":{ "oid": "8d946079c5f51ce934ff5edf6333962c6061d8a5", "alias": []}, "final_oid":{ "oid": "8d946079c5f51ce934ff5edf6333962c6061d8a5", "alias": []}, "sig_orig": { "git_time": { "time": 1265043337, "offset": 60 }, "name": "Florian Pritz", "email": "bluewind@xssn.at", "md5": "bd24019e06241c0a1dd3cc4ea0788493" }, "log_orig": "ui-shared.c: fix segfault when repo is empty", "sig_final": { "git_time": { "time": 1265043337, "offset": 60 }, "name": "Florian Pritz", "email": "bluewind@xssn.at", "md5": "bd24019e06241c0a1dd3cc4ea0788493" }, "log_final": "ui-shared.c: fix segfault when repo is empty", "ranges": [ {"l": 1,"o": 249,"f": 319}, {"l": 1,"o": 349,"f": 466}]}, {"ord":67,"orig_oid":{ "oid": "c3f23d4571c06c979eddbd4c973163ba76c7e50f", "alias": []}, "final_oid":{ "oid": "c3f23d4571c06c979eddbd4c973163ba76c7e50f", "alias": []}, "sig_orig": { "git_time": { "time": 1276124964, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-shared: Improve const-ness in API", "sig_final": { "git_time": { "time": 1276124964, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-shared: Improve const-ness in API", "ranges": [ {"l": 1,"o": 163,"f": 202}, {"l": 1,"o": 184,"f": 223}, {"l": 2,"o": 190,"f": 261}, {"l": 3,"o": 243,"f": 312}, {"l": 2,"o": 260,"f": 329}, {"l": 1,"o": 266,"f": 335}, {"l": 2,"o": 272,"f": 341}, {"l": 2,"o": 278,"f": 347}, {"l": 2,"o": 284,"f": 359}, {"l": 2,"o": 349,"f": 446}, {"l": 3,"o": 355,"f": 452}, {"l": 2,"o": 362,"f": 459}, {"l": 1,"o": 390,"f": 503}, {"l": 2,"o": 396,"f": 509}, {"l": 2,"o": 617,"f": 929}]}, {"ord":68,"orig_oid":{ "oid": "c8e3295469bd3b8e38a9ea4478d517d3861e6c93", "alias": []}, "final_oid":{ "oid": "c8e3295469bd3b8e38a9ea4478d517d3861e6c93", "alias": []}, "sig_orig": { "git_time": { "time": 1276124967, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-shared: Replace ctx.qry.path with ctx.qry.vpath", "sig_final": { "git_time": { "time": 1276124967, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-shared: Replace ctx.qry.path with ctx.qry.vpath", "ranges": [ {"l": 1,"o": 624,"f": 936}]}, {"ord":69,"orig_oid":{ "oid": "c93ef96aaf77437abeb552bd9e30973f90365f3a", "alias": []}, "final_oid":{ "oid": "c93ef96aaf77437abeb552bd9e30973f90365f3a", "alias": []}, "sig_orig": { "git_time": { "time": 1276124968, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-shared: Display path limit directly beneath tab bar in relevant pages", "sig_final": { "git_time": { "time": 1276124968, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-shared: Display path limit directly beneath tab bar in relevant pages", "ranges": [ {"l": 2,"o": 761,"f": 1140}, {"l": 2,"o": 764,"f": 1151}]}, {"ord":70,"orig_oid":{ "oid": "24fd7e54c82294efa68ecae5dd9cb8a8986c04bf", "alias": []}, "final_oid":{ "oid": "24fd7e54c82294efa68ecae5dd9cb8a8986c04bf", "alias": []}, "sig_orig": { "git_time": { "time": 1276124969, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-shared: Teach \u0022breadcrumb\u0022 navigation to path limit display beneath tab bar", "sig_final": { "git_time": { "time": 1276124969, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-shared: Teach \u0022breadcrumb\u0022 navigation to path limit display beneath tab bar", "ranges": [ {"l": 2,"o": 458,"f": 575}, {"l": 1,"o": 712,"f": 970}, {"l": 2,"o": 714,"f": 972}, {"l": 5,"o": 719,"f": 977}, {"l": 4,"o": 725,"f": 983}, {"l": 2,"o": 730,"f": 988}]}, {"ord":71,"orig_oid":{ "oid": "eac1b675414722ae90df75abc727b2795bc096f0", "alias": []}, "final_oid":{ "oid": "eac1b675414722ae90df75abc727b2795bc096f0", "alias": []}, "sig_orig": { "git_time": { "time": 1276124973, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-patch: Apply path limit to generated patch", "sig_final": { "git_time": { "time": 1276124973, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-patch: Apply path limit to generated patch", "ranges": [ {"l": 1,"o": 391,"f": 504}, {"l": 1,"o": 393,"f": 506}]}, {"ord":72,"orig_oid":{ "oid": "685872b770be2af643d00365d5358e46687f7385", "alias": []}, "final_oid":{ "oid": "685872b770be2af643d00365d5358e46687f7385", "alias": []}, "sig_orig": { "git_time": { "time": 1276124975, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-commit: Preserve path limit in links to commit page", "sig_final": { "git_time": { "time": 1276124975, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-commit: Preserve path limit in links to commit page", "ranges": [ {"l": 1,"o": 334,"f": 407}]}, {"ord":73,"orig_oid":{ "oid": "d20313e3daf855ee5d4808e050f54614c200d7b1", "alias": []}, "final_oid":{ "oid": "d20313e3daf855ee5d4808e050f54614c200d7b1", "alias": []}, "sig_orig": { "git_time": { "time": 1276193751, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-diff: Add links to increase/decrease number of context lines in diffs", "sig_final": { "git_time": { "time": 1276193751, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-diff: Add links to increase/decrease number of context lines in diffs", "ranges": [ {"l": 7,"o": 344,"f": 417}, {"l": 7,"o": 392,"f": 481}]}, {"ord":74,"orig_oid":{ "oid": "72ef913514288bd2aae23509581097bfd3edf8c4", "alias": []}, "final_oid":{ "oid": "72ef913514288bd2aae23509581097bfd3edf8c4", "alias": []}, "sig_orig": { "git_time": { "time": 1277394800, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_orig": "ui-diff: Add link to ignore/show whitespace changes in diffs", "sig_final": { "git_time": { "time": 1277394800, "offset": 120 }, "name": "Johan Herland", "email": "johan@herland.net", "md5": "4eae9ea38e17516c22cd8b2bac66810f" }, "log_final": "ui-diff: Add link to ignore/show whitespace changes in diffs", "ranges": [ {"l": 5,"o": 352,"f": 425}, {"l": 5,"o": 405,"f": 489}]}, {"ord":75,"orig_oid":{ "oid": "808c685ebb7cd2d24d3881b74e3be2439bd1393b", "alias": []}, "final_oid":{ "oid": "808c685ebb7cd2d24d3881b74e3be2439bd1393b", "alias": []}, "sig_orig": { "git_time": { "time": 1293104874, "offset": 60 }, "name": "Bernhard Reutner-Fischer", "email": "rep.dot.nop@gmail.com", "md5": "0f39ed3bcad52ef2c88c90062b7714dc" }, "log_orig": "implement repo.logo and repo.logo-link", "sig_final": { "git_time": { "time": 1293104874, "offset": 60 }, "name": "Bernhard Reutner-Fischer", "email": "rep.dot.nop@gmail.com", "md5": "0f39ed3bcad52ef2c88c90062b7714dc" }, "log_final": "implement repo.logo and repo.logo-link", "ranges": [ {"l": 2,"o": 759,"f": 1005}, {"l": 1,"o": 766,"f": 1012}, {"l": 1,"o": 770,"f": 1016}, {"l": 1,"o": 772,"f": 1018}, {"l": 2,"o": 774,"f": 1020}, {"l": 1,"o": 779,"f": 1025}]}, {"ord":76,"orig_oid":{ "oid": "6857bec50a52340fa6b85d626f49d45dd331ed0e", "alias": []}, "final_oid":{ "oid": "6857bec50a52340fa6b85d626f49d45dd331ed0e", "alias": []}, "sig_orig": { "git_time": { "time": 1308125053, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_orig": "ui-tree.c: add support for path-selected submodule links", "sig_final": { "git_time": { "time": 1308125053, "offset": 120 }, "name": "Lars Hjemli", "email": "hjemli@gmail.com", "md5": "3b0d25799af76340d36a521e61d1f464" }, "log_final": "ui-tree.c: add support for path-selected submodule links", "ranges": [ {"l": 20,"o": 508,"f": 600}, {"l": 11,"o": 528,"f": 621}, {"l": 1,"o": 552,"f": 650}, {"l": 1,"o": 554,"f": 657}, {"l": 4,"o": 558,"f": 659}]}, {"ord":77,"orig_oid":{ "oid": "7530d94f05887b8065742adb614c368d8568a22c", "alias": []}, "final_oid":{ "oid": "7530d94f05887b8065742adb614c368d8568a22c", "alias": []}, "sig_orig": { "git_time": { "time": 1312073045, "offset": 120 }, "name": "Tobias Grimm", "email": "git@e-tobi.net", "md5": "6d47dd48a9536a91c21f6c15834f8ba0" }, "log_orig": "Add sort parameter to pager of repo list", "sig_final": { "git_time": { "time": 1312073045, "offset": 120 }, "name": "Tobias Grimm", "email": "git@e-tobi.net", "md5": "6d47dd48a9536a91c21f6c15834f8ba0" }, "log_final": "Add sort parameter to pager of repo list", "ranges": [ {"l": 4,"o": 157,"f": 190}, {"l": 1,"o": 162,"f": 195}]}, {"ord":78,"orig_oid":{ "oid": "21418ec42a9a2de4c2c22eca7a1183b311914eca", "alias": []}, "final_oid":{ "oid": "21418ec42a9a2de4c2c22eca7a1183b311914eca", "alias": []}, "sig_orig": { "git_time": { "time": 1325667711, "offset": 0 }, "name": "Eric Wong", "email": "normalperson@yhbt.net", "md5": "18813f71506ebad74179bf8c5a136696" }, "log_orig": "segfault fix on some bogus requests", "sig_final": { "git_time": { "time": 1325667711, "offset": 0 }, "name": "Eric Wong", "email": "normalperson@yhbt.net", "md5": "18813f71506ebad74179bf8c5a136696" }, "log_final": "segfault fix on some bogus requests", "ranges": [ {"l": 1,"o": 297,"f": 367}, {"l": 1,"o": 341,"f": 408}]}, {"ord":79,"orig_oid":{ "oid": "c366bd6fa88fb7dbe1e42c84d56e2bda0b1682c5", "alias": []}, "final_oid":{ "oid": "c366bd6fa88fb7dbe1e42c84d56e2bda0b1682c5", "alias": []}, "sig_orig": { "git_time": { "time": 1349808358, "offset": 120 }, "name": "William Bell", "email": "william.bell@frog.za.net", "md5": "b46e18fece9f152b09ad1b32eb382ddd" }, "log_orig": "ui: Remember to print ampersand as proper html entities.", "sig_final": { "git_time": { "time": 1349808358, "offset": 120 }, "name": "William Bell", "email": "william.bell@frog.za.net", "md5": "b46e18fece9f152b09ad1b32eb382ddd" }, "log_final": "ui: Remember to print ampersand as proper html entities.", "ranges": [ {"l": 1,"o": 86,"f": 117}, {"l": 1,"o": 149,"f": 182}, {"l": 1,"o": 155,"f": 188}, {"l": 1,"o": 161,"f": 194}, {"l": 1,"o": 301,"f": 371}, {"l": 1,"o": 307,"f": 377}, {"l": 1,"o": 316,"f": 386}]}, {"ord":80,"orig_oid":{ "oid": "fe1bb0e765883fa4149fba12daee81b6ae070de3", "alias": []}, "final_oid":{ "oid": "fe1bb0e765883fa4149fba12daee81b6ae070de3", "alias": []}, "sig_orig": { "git_time": { "time": 1351445768, "offset": 60 }, "name": "Christian Franke", "email": "nobody@nowhere.ws", "md5": "7d98527cf8d63a2c48b8620bb748f72e" }, "log_orig": "ui-shared: use placeholder for empty commit subject", "sig_final": { "git_time": { "time": 1351445768, "offset": 60 }, "name": "Christian Franke", "email": "nobody@nowhere.ws", "md5": "7d98527cf8d63a2c48b8620bb748f72e" }, "log_final": "ui-shared: use placeholder for empty commit subject", "ranges": [ {"l": 1,"o": 367,"f": 442}]}, {"ord":81,"orig_oid":{ "oid": "53bc747d311d18642fa3ad0cc0de34f3899ed1f4", "alias": []}, "final_oid":{ "oid": "53bc747d311d18642fa3ad0cc0de34f3899ed1f4", "alias": []}, "sig_orig": { "git_time": { "time": 1362323069, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_orig": "Fix several whitespace errors", "sig_final": { "git_time": { "time": 1362323069, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_final": "Fix several whitespace errors", "ranges": [ {"l": 1,"o": 26,"f": 27}, {"l": 1,"o": 502,"f": 585}]}, {"ord":82,"orig_oid":{ "oid": "bafab423f20bc1448b293842c235965e1681f07e", "alias": []}, "final_oid":{ "oid": "bafab423f20bc1448b293842c235965e1681f07e", "alias": []}, "sig_orig": { "git_time": { "time": 1362383553, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_orig": "Mark several functions/variables static", "sig_final": { "git_time": { "time": 1362383553, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_final": "Mark several functions/variables static", "ranges": [ {"l": 2,"o": 515,"f": 598}, {"l": 1,"o": 720,"f": 922}]}, {"ord":83,"orig_oid":{ "oid": "6d8a789d61f3a682bc040f1f7f44050b1f723546", "alias": []}, "final_oid":{ "oid": "6d8a789d61f3a682bc040f1f7f44050b1f723546", "alias": []}, "sig_orig": { "git_time": { "time": 1362603114, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: fix return type of cgit_self_link", "sig_final": { "git_time": { "time": 1362603114, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: fix return type of cgit_self_link", "ranges": [ {"l": 2,"o": 484,"f": 566}, {"l": 1,"o": 487,"f": 569}, {"l": 4,"o": 489,"f": 571}]}, {"ord":84,"orig_oid":{ "oid": "40e1d9b6177558bf4069c09ca6d8e3a682baa988", "alias": []}, "final_oid":{ "oid": "40e1d9b6177558bf4069c09ca6d8e3a682baa988", "alias": []}, "sig_orig": { "git_time": { "time": 1363808593, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: squelch compiler warning.", "sig_final": { "git_time": { "time": 1363808593, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: squelch compiler warning.", "ranges": [ {"l": 1,"o": 526,"f": 620}]}, {"ord":85,"orig_oid":{ "oid": "b1f17f168b91d709c0c0e62608de301a36f06da9", "alias": []}, "final_oid":{ "oid": "b1f17f168b91d709c0c0e62608de301a36f06da9", "alias": []}, "sig_orig": { "git_time": { "time": 1364839414, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Fix out-of-bounds memory accesses with virtual_root\u003d\u0022\u0022", "sig_final": { "git_time": { "time": 1364839414, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Fix out-of-bounds memory accesses with virtual_root\u003d\u0022\u0022", "ranges": [ {"l": 1,"o": 60,"f": 83}]}, {"ord":86,"orig_oid":{ "oid": "fb3655df3bf85bd405c5921bbd4b3a54c705c839", "alias": []}, "final_oid":{ "oid": "fb3655df3bf85bd405c5921bbd4b3a54c705c839", "alias": []}, "sig_orig": { "git_time": { "time": 1365240537, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "use struct strbuf instead of static buffers", "sig_final": { "git_time": { "time": 1365240537, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "use struct strbuf instead of static buffers", "ranges": [ {"l": 1,"o": 65,"f": 65}, {"l": 4,"o": 78,"f": 98}, {"l": 1,"o": 87,"f": 107}, {"l": 2,"o": 91,"f": 111}, {"l": 2,"o": 95,"f": 115}, {"l": 2,"o": 100,"f": 120}, {"l": 1,"o": 564,"f": 658}, {"l": 1,"o": 680,"f": 824}, {"l": 1,"o": 682,"f": 826}, {"l": 1,"o": 689,"f": 834}, {"l": 3,"o": 732,"f": 933}, {"l": 3,"o": 736,"f": 937}, {"l": 1,"o": 933,"f": 1195}, {"l": 1,"o": 934,"f": 1197}, {"l": 1,"o": 941,"f": 1205}, {"l": 4,"o": 945,"f": 1209}, {"l": 1,"o": 951,"f": 1222}]}, {"ord":87,"orig_oid":{ "oid": "ed5bd30ebe6921dd22948a3f33a314283f043606", "alias": []}, "final_oid":{ "oid": "ed5bd30ebe6921dd22948a3f33a314283f043606", "alias": []}, "sig_orig": { "git_time": { "time": 1365243832, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Convert cgit_print_error to a variadic function", "sig_final": { "git_time": { "time": 1365243832, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Convert cgit_print_error to a variadic function", "ranges": [ {"l": 1,"o": 31,"f": 31}, {"l": 9,"o": 33,"f": 33}, {"l": 3,"o": 43,"f": 43}]}, {"ord":88,"orig_oid":{ "oid": "8f208794318f83826e98168b8b430f2d9a68bcce", "alias": []}, "final_oid":{ "oid": "8f208794318f83826e98168b8b430f2d9a68bcce", "alias": []}, "sig_orig": { "git_time": { "time": 1365244679, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Always #include corresponding .h in .c files", "sig_final": { "git_time": { "time": 1365244679, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Always #include corresponding .h in .c files", "ranges": [ {"l": 1,"o": 10,"f": 10}]}, {"ord":89,"orig_oid":{ "oid": "a45030f8ee10bc97ffcf1bf0061a2e6f22c7252a", "alias": []}, "final_oid":{ "oid": "a45030f8ee10bc97ffcf1bf0061a2e6f22c7252a", "alias": []}, "sig_orig": { "git_time": { "time": 1389555916, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: URL-escape script_name", "sig_final": { "git_time": { "time": 1389555916, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: URL-escape script_name", "ranges": [ {"l": 1,"o": 222,"f": 290}]}, {"ord":90,"orig_oid":{ "oid": "d6e9200cc35411f3f27426b608bcfdef9348e6d3", "alias": []}, "final_oid":{ "oid": "d6e9200cc35411f3f27426b608bcfdef9348e6d3", "alias": []}, "sig_orig": { "git_time": { "time": 1389732571, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "auth: add basic authentication filter framework", "sig_final": { "git_time": { "time": 1389732571, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "auth: add basic authentication filter framework", "ranges": [ {"l": 1,"o": 645,"f": 742}, {"l": 1,"o": 820,"f": 1035}, {"l": 1,"o": 828,"f": 1037}]}, {"ord":91,"orig_oid":{ "oid": "f60ffa143cca61e9729ac71033e1a556cf422871", "alias": []}, "final_oid":{ "oid": "f60ffa143cca61e9729ac71033e1a556cf422871", "alias": []}, "sig_orig": { "git_time": { "time": 1389819195, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_orig": "Switch to exclusively using global ctx", "sig_final": { "git_time": { "time": 1389819195, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_final": "Switch to exclusively using global ctx", "ranges": [ {"l": 4,"o": 439,"f": 515}, {"l": 3,"o": 444,"f": 520}, {"l": 8,"o": 449,"f": 525}, {"l": 5,"o": 457,"f": 537}, {"l": 3,"o": 463,"f": 543}, {"l": 15,"o": 467,"f": 547}, {"l": 3,"o": 483,"f": 563}, {"l": 1,"o": 488,"f": 568}, {"l": 1,"o": 490,"f": 570}, {"l": 1,"o": 634,"f": 722}, {"l": 1,"o": 636,"f": 724}, {"l": 9,"o": 639,"f": 727}, {"l": 1,"o": 651,"f": 741}, {"l": 4,"o": 653,"f": 743}, {"l": 1,"o": 658,"f": 748}, {"l": 1,"o": 662,"f": 790}, {"l": 3,"o": 664,"f": 794}, {"l": 1,"o": 675,"f": 804}, {"l": 2,"o": 678,"f": 807}, {"l": 1,"o": 683,"f": 817}, {"l": 1,"o": 685,"f": 819}, {"l": 1,"o": 688,"f": 822}, {"l": 1,"o": 690,"f": 825}, {"l": 2,"o": 700,"f": 839}, {"l": 2,"o": 704,"f": 843}, {"l": 1,"o": 769,"f": 961}, {"l": 1,"o": 771,"f": 966}, {"l": 1,"o": 774,"f": 969}, {"l": 1,"o": 776,"f": 971}, {"l": 3,"o": 779,"f": 974}, {"l": 1,"o": 787,"f": 982}, {"l": 1,"o": 792,"f": 987}, {"l": 1,"o": 795,"f": 1003}, {"l": 2,"o": 802,"f": 1010}, {"l": 3,"o": 805,"f": 1013}, {"l": 1,"o": 809,"f": 1017}, {"l": 1,"o": 822,"f": 1030}, {"l": 2,"o": 825,"f": 1033}, {"l": 1,"o": 837,"f": 1039}, {"l": 1,"o": 841,"f": 1043}, {"l": 1,"o": 844,"f": 1051}, {"l": 2,"o": 846,"f": 1053}, {"l": 1,"o": 854,"f": 1061}, {"l": 2,"o": 857,"f": 1064}, {"l": 1,"o": 861,"f": 1068}, {"l": 6,"o": 862,"f": 1076}, {"l": 1,"o": 871,"f": 1089}, {"l": 1,"o": 873,"f": 1091}, {"l": 3,"o": 875,"f": 1093}, {"l": 4,"o": 890,"f": 1112}, {"l": 1,"o": 896,"f": 1118}, {"l": 1,"o": 900,"f": 1122}, {"l": 1,"o": 910,"f": 1132}, {"l": 1,"o": 919,"f": 1142}]}, {"ord":92,"orig_oid":{ "oid": "a431326e8fab8153905fbde036dd3c9fb4cc8eaa", "alias": []}, "final_oid":{ "oid": "a431326e8fab8153905fbde036dd3c9fb4cc8eaa", "alias": []}, "sig_orig": { "git_time": { "time": 1389910914, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "auth: have cgit calculate login address", "sig_final": { "git_time": { "time": 1389910914, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "auth: have cgit calculate login address", "ranges": [ {"l": 1,"o": 77,"f": 89}, {"l": 5,"o": 79,"f": 91}]}, {"ord":93,"orig_oid":{ "oid": "bb3cc0d9666553608b7c89aef84d21d3312ce488", "alias": []}, "final_oid":{ "oid": "bb3cc0d9666553608b7c89aef84d21d3312ce488", "alias": []}, "sig_orig": { "git_time": { "time": 1389969701, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: do not allow negative minutes", "sig_final": { "git_time": { "time": 1389969701, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: do not allow negative minutes", "ranges": [ {"l": 2,"o": 599,"f": 687}]}, {"ord":94,"orig_oid":{ "oid": "bbfa006e6eb93d56842c1d90bbba1c5484afb855", "alias": []}, "final_oid":{ "oid": "bbfa006e6eb93d56842c1d90bbba1c5484afb855", "alias": []}, "sig_orig": { "git_time": { "time": 1406927657, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Extract clone URL printing to ui-shared.c", "sig_final": { "git_time": { "time": 1406927657, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Extract clone URL printing to ui-shared.c", "ranges": [ {"l": 2,"o": 730,"f": 896}, {"l": 1,"o": 734,"f": 900}, {"l": 2,"o": 754,"f": 908}, {"l": 10,"o": 757,"f": 911}]}, {"ord":95,"orig_oid":{ "oid": "3c53ebfb57a5dba8fc65b2f99ebbfb6356666e34", "alias": []}, "final_oid":{ "oid": "3c53ebfb57a5dba8fc65b2f99ebbfb6356666e34", "alias": []}, "sig_orig": { "git_time": { "time": 1406927659, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: add rel-vcs microformat links to HTML header", "sig_final": { "git_time": { "time": 1406927659, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: add rel-vcs microformat links to HTML header", "ranges": [ {"l": 9,"o": 663,"f": 760}, {"l": 2,"o": 710,"f": 837}]}, {"ord":96,"orig_oid":{ "oid": "eeddb5bc0905d4728001a111a9b1eb60ecccf9bd", "alias": []}, "final_oid":{ "oid": "eeddb5bc0905d4728001a111a9b1eb60ecccf9bd", "alias": []}, "sig_orig": { "git_time": { "time": 1412503142, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: remove toggle_ssdiff arg to cgit_commit_link()", "sig_final": { "git_time": { "time": 1412503142, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: remove toggle_ssdiff arg to cgit_commit_link()", "ranges": [ {"l": 1,"o": 331,"f": 403}, {"l": 1,"o": 465,"f": 546}, {"l": 1,"o": 505,"f": 586}, {"l": 1,"o": 877,"f": 1090}]}, {"ord":97,"orig_oid":{ "oid": "03f537f1a134c8578ae4c16055596539fbbcc220", "alias": []}, "final_oid":{ "oid": "03f537f1a134c8578ae4c16055596539fbbcc220", "alias": []}, "sig_orig": { "git_time": { "time": 1412503143, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: remove toggle_ssdiff arg to cgit_diff_link()", "sig_final": { "git_time": { "time": 1412503143, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: remove toggle_ssdiff arg to cgit_diff_link()", "ranges": [ {"l": 1,"o": 388,"f": 461}, {"l": 1,"o": 481,"f": 562}, {"l": 1,"o": 879,"f": 1092}]}, {"ord":98,"orig_oid":{ "oid": "1830271c5958526425f92ae2b369646b54e3c370", "alias": []}, "final_oid":{ "oid": "1830271c5958526425f92ae2b369646b54e3c370", "alias": []}, "sig_orig": { "git_time": { "time": 1412503144, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Change \u0022ss\u0022 diff flag to an enum", "sig_final": { "git_time": { "time": 1412503144, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Change \u0022ss\u0022 diff flag to an enum", "ranges": [ {"l": 1,"o": 349,"f": 414}, {"l": 1,"o": 351,"f": 416}, {"l": 1,"o": 405,"f": 478}, {"l": 1,"o": 407,"f": 480}]}, {"ord":99,"orig_oid":{ "oid": "caed6cb27f1869b0590cab56fc3394762892d049", "alias": []}, "final_oid":{ "oid": "caed6cb27f1869b0590cab56fc3394762892d049", "alias": []}, "sig_orig": { "git_time": { "time": 1419083979, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: show absolute time in tooltip for relative dates", "sig_final": { "git_time": { "time": 1419083979, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: show absolute time in tooltip for relative dates", "ranges": [ {"l": 2,"o": 591,"f": 672}, {"l": 3,"o": 604,"f": 676}]}, {"ord":100,"orig_oid":{ "oid": "c422b9b3d5938a4d386533604d4c0dbedfcb2b6d", "alias": []}, "final_oid":{ "oid": "c422b9b3d5938a4d386533604d4c0dbedfcb2b6d", "alias": []}, "sig_orig": { "git_time": { "time": 1421360294, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "tag: reference with \u0022h\u0022 instead of \u0022id\u0022", "sig_final": { "git_time": { "time": 1421360294, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "tag: reference with \u0022h\u0022 instead of \u0022id\u0022", "ranges": [ {"l": 1,"o": 276,"f": 336}, {"l": 1,"o": 278,"f": 338}, {"l": 2,"o": 446,"f": 523}]}, {"ord":101,"orig_oid":{ "oid": "1a9e56607eae2df2f4522b41294d94cb09fc4e5c", "alias": []}, "final_oid":{ "oid": "1a9e56607eae2df2f4522b41294d94cb09fc4e5c", "alias": []}, "sig_orig": { "git_time": { "time": 1423127502, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_orig": "ui-shared.c: Refactor add_clone_urls()", "sig_final": { "git_time": { "time": 1423127502, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_final": "ui-shared.c: Refactor add_clone_urls()", "ranges": [ {"l": 2,"o": 754,"f": 898}, {"l": 7,"o": 757,"f": 901}, {"l": 1,"o": 766,"f": 910}]}, {"ord":102,"orig_oid":{ "oid": "db4b735464aa9a3a329494b7f042413a65e182f2", "alias": []}, "final_oid":{ "oid": "db4b735464aa9a3a329494b7f042413a65e182f2", "alias": []}, "sig_orig": { "git_time": { "time": 1425399232, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: keep filter repolist page in pagination", "sig_final": { "git_time": { "time": 1425399232, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: keep filter repolist page in pagination", "ranges": [ {"l": 1,"o": 150,"f": 173}]}, {"ord":103,"orig_oid":{ "oid": "6bcda2f73da605d48279341b1905c1b234a39368", "alias": []}, "final_oid":{ "oid": "6bcda2f73da605d48279341b1905c1b234a39368", "alias": []}, "sig_orig": { "git_time": { "time": 1425399522, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: Add current url helper function.", "sig_final": { "git_time": { "time": 1425399522, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: Add current url helper function.", "ranges": [ {"l": 1,"o": 69,"f": 69}, {"l": 2,"o": 73,"f": 78}]}, {"ord":104,"orig_oid":{ "oid": "2e4a41e84029cbfa70c654fe5dfb35747f2dfbba", "alias": []}, "final_oid":{ "oid": "2e4a41e84029cbfa70c654fe5dfb35747f2dfbba", "alias": []}, "sig_orig": { "git_time": { "time": 1425399820, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "Make root handling sane again.", "sig_final": { "git_time": { "time": 1425399820, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "Make root handling sane again.", "ranges": [ {"l": 1,"o": 150,"f": 168}, {"l": 1,"o": 154,"f": 172}, {"l": 1,"o": 182,"f": 203}, {"l": 1,"o": 196,"f": 217}, {"l": 1,"o": 203,"f": 224}, {"l": 1,"o": 205,"f": 226}, {"l": 1,"o": 449,"f": 519}, {"l": 1,"o": 878,"f": 1031}, {"l": 1,"o": 956,"f": 1126}]}, {"ord":105,"orig_oid":{ "oid": "db021a1989a52911557ce6b998c11fbe4a4bea9d", "alias": []}, "final_oid":{ "oid": "db021a1989a52911557ce6b998c11fbe4a4bea9d", "alias": []}, "sig_orig": { "git_time": { "time": 1425584505, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_orig": "Remove no-op link from submodule entries", "sig_final": { "git_time": { "time": 1425584505, "offset": 60 }, "name": "Lukas Fleischer", "email": "cgit@cryptocrack.de", "md5": "6bd0f17ef7bb34f38f278681ebdc90cb" }, "log_final": "Remove no-op link from submodule entries", "ranges": [ {"l": 18,"o": 562,"f": 632}, {"l": 6,"o": 581,"f": 651}]}, {"ord":106,"orig_oid":{ "oid": "8eef4589d0ba80fd4e6a9ce2f3ca4fcf266a64e0", "alias": []}, "final_oid":{ "oid": "8eef4589d0ba80fd4e6a9ce2f3ca4fcf266a64e0", "alias": []}, "sig_orig": { "git_time": { "time": 1425814447, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: currenturl should take into account leading slash", "sig_final": { "git_time": { "time": 1425814447, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: currenturl should take into account leading slash", "ranges": [ {"l": 2,"o": 72,"f": 70}, {"l": 3,"o": 74,"f": 75}]}, {"ord":107,"orig_oid":{ "oid": "e3d3fffdd447cdb4551549faae65bae5353a2cab", "alias": []}, "final_oid":{ "oid": "e3d3fffdd447cdb4551549faae65bae5353a2cab", "alias": []}, "sig_orig": { "git_time": { "time": 1425832336, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Avoid non-ANSI function declarations", "sig_final": { "git_time": { "time": 1425832336, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Avoid non-ANSI function declarations", "ranges": [ {"l": 1,"o": 49,"f": 49}, {"l": 1,"o": 75,"f": 80}, {"l": 1,"o": 83,"f": 88}, {"l": 1,"o": 738,"f": 848}]}, {"ord":108,"orig_oid":{ "oid": "0f23d4651c80170574c0ab2f091c0718150631ce", "alias": []}, "final_oid":{ "oid": "0f23d4651c80170574c0ab2f091c0718150631ce", "alias": []}, "sig_orig": { "git_time": { "time": 1425832342, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: make cgit_doctype 'static'", "sig_final": { "git_time": { "time": 1425832342, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: make cgit_doctype 'static'", "ranges": [ {"l": 1,"o": 14,"f": 15}]}, {"ord":109,"orig_oid":{ "oid": "94e5f212f55d3f4dd6ce83edb6db823de7eb8cc7", "alias": []}, "final_oid":{ "oid": "94e5f212f55d3f4dd6ce83edb6db823de7eb8cc7", "alias": []}, "sig_orig": { "git_time": { "time": 1425832344, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: avoid initializing static variable to zero", "sig_final": { "git_time": { "time": 1425832344, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: avoid initializing static variable to zero", "ranges": [ {"l": 1,"o": 85,"f": 90}]}, {"ord":110,"orig_oid":{ "oid": "d34b96719053ff9340519b64f6d970caaa64350d", "alias": []}, "final_oid":{ "oid": "d34b96719053ff9340519b64f6d970caaa64350d", "alias": []}, "sig_orig": { "git_time": { "time": 1425832345, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: don't use an integer as a NULL pointer", "sig_final": { "git_time": { "time": 1425832345, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: don't use an integer as a NULL pointer", "ranges": [ {"l": 1,"o": 122,"f": 127}]}, {"ord":111,"orig_oid":{ "oid": "de83de276bef7509ab8255682595ad4521f3a193", "alias": []}, "final_oid":{ "oid": "de83de276bef7509ab8255682595ad4521f3a193", "alias": []}, "sig_orig": { "git_time": { "time": 1438072921, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "git: update to v2.5.0", "sig_final": { "git_time": { "time": 1438072921, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "git: update to v2.5.0", "ranges": [ {"l": 1,"o": 795,"f": 921}]}, {"ord":112,"orig_oid":{ "oid": "d7034806a4b1279f62d606501f831dcad31798e6", "alias": []}, "final_oid":{ "oid": "d7034806a4b1279f62d606501f831dcad31798e6", "alias": []}, "sig_orig": { "git_time": { "time": 1439383809, "offset": 120 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "about: always ensure page has a trailing slash", "sig_final": { "git_time": { "time": 1439383809, "offset": 120 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "about: always ensure page has a trailing slash", "ranges": [ {"l": 3,"o": 692,"f": 752}, {"l": 2,"o": 698,"f": 758}]}, {"ord":113,"orig_oid":{ "oid": "30304d8156a72ffc95e45e1aa9407319b81bd253", "alias": []}, "final_oid":{ "oid": "30304d8156a72ffc95e45e1aa9407319b81bd253", "alias": []}, "sig_orig": { "git_time": { "time": 1439391328, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "log: allow users to follow a file", "sig_final": { "git_time": { "time": 1439391328, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "log: allow users to follow a file", "ranges": [ {"l": 2,"o": 306,"f": 361}, {"l": 5,"o": 336,"f": 391}, {"l": 4,"o": 382,"f": 430}, {"l": 4,"o": 442,"f": 494}, {"l": 1,"o": 486,"f": 542}, {"l": 1,"o": 962,"f": 1082}, {"l": 8,"o": 1010,"f": 1143}]}, {"ord":114,"orig_oid":{ "oid": "a360666df3cfcd1b384cd66b18803d72e3893b3d", "alias": []}, "final_oid":{ "oid": "a360666df3cfcd1b384cd66b18803d72e3893b3d", "alias": []}, "sig_orig": { "git_time": { "time": 1439465074, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: show full date in tooltip if longer ago than max_relative", "sig_final": { "git_time": { "time": 1439465074, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: show full date in tooltip if longer ago than max_relative", "ranges": [ {"l": 1,"o": 647,"f": 691}, {"l": 1,"o": 649,"f": 693}, {"l": 1,"o": 651,"f": 695}]}, {"ord":115,"orig_oid":{ "oid": "aec1204a54e3baa12c76db75c2f67696def05eb0", "alias": []}, "final_oid":{ "oid": "aec1204a54e3baa12c76db75c2f67696def05eb0", "alias": []}, "sig_orig": { "git_time": { "time": 1439552821, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: add cgit_print_error_page() function", "sig_final": { "git_time": { "time": 1439552821, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: add cgit_print_error_page() function", "ranges": [ {"l": 3,"o": 791,"f": 871}, {"l": 2,"o": 794,"f": 875}, {"l": 3,"o": 799,"f": 878}, {"l": 2,"o": 803,"f": 882}]}, {"ord":116,"orig_oid":{ "oid": "764987980ec0e806205b8e075feafd4e010dcbd9", "alias": []}, "final_oid":{ "oid": "764987980ec0e806205b8e075feafd4e010dcbd9", "alias": []}, "sig_orig": { "git_time": { "time": 1439552831, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: add cgit_print_layout_{start,end}()", "sig_final": { "git_time": { "time": 1439552831, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: add cgit_print_layout_{start,end}()", "ranges": [ {"l": 12,"o": 805,"f": 884}]}, {"ord":117,"orig_oid":{ "oid": "c5975ae56684a1188637f2bdba7d8e18de075abc", "alias": []}, "final_oid":{ "oid": "c5975ae56684a1188637f2bdba7d8e18de075abc", "alias": []}, "sig_orig": { "git_time": { "time": 1439552842, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: cache errors for \u0022dynamic TTL\u0022", "sig_final": { "git_time": { "time": 1439552842, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: cache errors for \u0022dynamic TTL\u0022", "ranges": [ {"l": 1,"o": 794,"f": 874}]}, {"ord":118,"orig_oid":{ "oid": "37fce9916a264e23c0639df56ca3ecbbdc1c84b8", "alias": []}, "final_oid":{ "oid": "37fce9916a264e23c0639df56ca3ecbbdc1c84b8", "alias": []}, "sig_orig": { "git_time": { "time": 1444389346, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "ui-shared: fix resource leak: free allocation from cgit_fileurl", "sig_final": { "git_time": { "time": 1444389346, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "ui-shared: fix resource leak: free allocation from cgit_fileurl", "ranges": [ {"l": 1,"o": 749,"f": 823}, {"l": 3,"o": 756,"f": 830}, {"l": 1,"o": 761,"f": 835}, {"l": 6,"o": 1003,"f": 1103}]}, {"ord":119,"orig_oid":{ "oid": "c5c0eb873e0b9e40ffc3e85b621310ee85059ceb", "alias": []}, "final_oid":{ "oid": "c5c0eb873e0b9e40ffc3e85b621310ee85059ceb", "alias": []}, "sig_orig": { "git_time": { "time": 1444389347, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "ui-shared: return value of cgit_currenturl is not const", "sig_final": { "git_time": { "time": 1444389347, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "ui-shared: return value of cgit_currenturl is not const", "ranges": [ {"l": 1,"o": 68,"f": 68}]}, {"ord":120,"orig_oid":{ "oid": "3e244a0ccaef8303302a2c462f36b8bdf3634a46", "alias": []}, "final_oid":{ "oid": "3e244a0ccaef8303302a2c462f36b8bdf3634a46", "alias": []}, "sig_orig": { "git_time": { "time": 1444389348, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "ui-shared: fix resource leak: free allocation from cgit_currenturl", "sig_final": { "git_time": { "time": 1444389348, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "ui-shared: fix resource leak: free allocation from cgit_currenturl", "ranges": [ {"l": 5,"o": 160,"f": 174}, {"l": 1,"o": 1026,"f": 1123}, {"l": 1,"o": 1033,"f": 1129}, {"l": 1,"o": 1040,"f": 1136}]}, {"ord":121,"orig_oid":{ "oid": "f77e2a8cfaf07b25ddedd57348a1d957b048bbf5", "alias": []}, "final_oid":{ "oid": "f77e2a8cfaf07b25ddedd57348a1d957b048bbf5", "alias": []}, "sig_orig": { "git_time": { "time": 1444389350, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "ui-shared: return value of cgit_hosturl is not const", "sig_final": { "git_time": { "time": 1444389350, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "ui-shared: return value of cgit_hosturl is not const", "ranges": [ {"l": 1,"o": 57,"f": 57}, {"l": 1,"o": 60,"f": 60}, {"l": 1,"o": 64,"f": 64}]}, {"ord":122,"orig_oid":{ "oid": "6edfc1672cdc5eb0dfb0ff5db0ec1de1ec53415e", "alias": []}, "final_oid":{ "oid": "6edfc1672cdc5eb0dfb0ff5db0ec1de1ec53415e", "alias": []}, "sig_orig": { "git_time": { "time": 1444389351, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "ui-shared: fix resource leak: free allocation from cgit_hosturl", "sig_final": { "git_time": { "time": 1444389351, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "ui-shared: fix resource leak: free allocation from cgit_hosturl", "ranges": [ {"l": 1,"o": 758,"f": 829}, {"l": 1,"o": 774,"f": 845}]}, {"ord":123,"orig_oid":{ "oid": "da1b89710f5eb25297a66613ff3130b2a31cb86a", "alias": []}, "final_oid":{ "oid": "da1b89710f5eb25297a66613ff3130b2a31cb86a", "alias": []}, "sig_orig": { "git_time": { "time": 1449966433, "offset": 60 }, "name": "Lukas Fleischer", "email": "lfleischer@lfos.de", "md5": "564a12abc584fef24e562ae9881c45bb" }, "log_orig": "Fix segmentation fault in hc()", "sig_final": { "git_time": { "time": 1449966433, "offset": 60 }, "name": "Lukas Fleischer", "email": "lfleischer@lfos.de", "md5": "564a12abc584fef24e562ae9881c45bb" }, "log_final": "Fix segmentation fault in hc()", "ranges": [ {"l": 3,"o": 892,"f": 963}]}, {"ord":124,"orig_oid":{ "oid": "559ab5ecc4445c8477ecf62c9fc97efa412dd562", "alias": []}, "final_oid":{ "oid": "559ab5ecc4445c8477ecf62c9fc97efa412dd562", "alias": []}, "sig_orig": { "git_time": { "time": 1451975933, "offset": 60 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "git: update to v2.7.0", "sig_final": { "git_time": { "time": 1451975933, "offset": 60 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "git: update to v2.7.0", "ranges": [ {"l": 1,"o": 528,"f": 581}]}, {"ord":125,"orig_oid":{ "oid": "4291453ec30656c2f59645d8a74cf295ce0253a9", "alias": []}, "final_oid":{ "oid": "4291453ec30656c2f59645d8a74cf295ce0253a9", "alias": []}, "sig_orig": { "git_time": { "time": 1452777219, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: Avoid new line injection into redirect header", "sig_final": { "git_time": { "time": 1452777219, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: Avoid new line injection into redirect header", "ranges": [ {"l": 3,"o": 712,"f": 755}]}, {"ord":126,"orig_oid":{ "oid": "513b3863d999f91b47d7e9f26710390db55f9463", "alias": []}, "final_oid":{ "oid": "513b3863d999f91b47d7e9f26710390db55f9463", "alias": []}, "sig_orig": { "git_time": { "time": 1452778117, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: prevent malicious filename from injecting headers", "sig_final": { "git_time": { "time": 1452778117, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: prevent malicious filename from injecting headers", "ranges": [ {"l": 5,"o": 695,"f": 736}]}, {"ord":127,"orig_oid":{ "oid": "360af46fac6fe79ec1868141a6c34b4c6b732ba0", "alias": []}, "final_oid":{ "oid": "360af46fac6fe79ec1868141a6c34b4c6b732ba0", "alias": []}, "sig_orig": { "git_time": { "time": 1453231983, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: add cgit_date_mode()", "sig_final": { "git_time": { "time": 1453231983, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: add cgit_date_mode()", "ranges": [ {"l": 2,"o": 631,"f": 664}, {"l": 4,"o": 635,"f": 667}]}, {"ord":128,"orig_oid":{ "oid": "f2a901d2e1db5217d6890b26c6dc1ec119505d02", "alias": []}, "final_oid":{ "oid": "f2a901d2e1db5217d6890b26c6dc1ec119505d02", "alias": []}, "sig_orig": { "git_time": { "time": 1453231985, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui: show ages in the originator's timezone", "sig_final": { "git_time": { "time": 1453231985, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui: show ages in the originator's timezone", "ranges": [ {"l": 1,"o": 639,"f": 671}, {"l": 1,"o": 647,"f": 679}, {"l": 1,"o": 668,"f": 700}, {"l": 1,"o": 672,"f": 704}, {"l": 1,"o": 676,"f": 708}, {"l": 1,"o": 680,"f": 712}, {"l": 1,"o": 684,"f": 716}, {"l": 1,"o": 687,"f": 719}]}, {"ord":129,"orig_oid":{ "oid": "9c15f3c6954e43c5ffd36230e666eccf112803f2", "alias": []}, "final_oid":{ "oid": "9c15f3c6954e43c5ffd36230e666eccf112803f2", "alias": []}, "sig_orig": { "git_time": { "time": 1454943954, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Avoid DATE_STRFTIME for long/short dates", "sig_final": { "git_time": { "time": 1454943954, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Avoid DATE_STRFTIME for long/short dates", "ranges": [ {"l": 1,"o": 610,"f": 663}, {"l": 1,"o": 613,"f": 666}, {"l": 1,"o": 622,"f": 675}, {"l": 1,"o": 639,"f": 692}, {"l": 1,"o": 641,"f": 694}, {"l": 1,"o": 783,"f": 862}]}, {"ord":130,"orig_oid":{ "oid": "5f2664f13c90f083b827d8fafa6cfc01c0c4f513", "alias": []}, "final_oid":{ "oid": "5f2664f13c90f083b827d8fafa6cfc01c0c4f513", "alias": []}, "sig_orig": { "git_time": { "time": 1456153455, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "ui-shared: add homepage to tabs", "sig_final": { "git_time": { "time": 1456153455, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "ui-shared: add homepage to tabs", "ranges": [ {"l": 3,"o": 1000,"f": 1096}, {"l": 1,"o": 1004,"f": 1100}]}, {"ord":131,"orig_oid":{ "oid": "c424b5cb0253d8b55d3932efa51aa703dab2bf40", "alias": []}, "final_oid":{ "oid": "c424b5cb0253d8b55d3932efa51aa703dab2bf40", "alias": []}, "sig_orig": { "git_time": { "time": 1456238132, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_orig": "tabs: do not use target\u003d_blank", "sig_final": { "git_time": { "time": 1456238132, "offset": 60 }, "name": "Jason A. Donenfeld", "email": "Jason@zx2c4.com", "md5": "689e78dac56e3d77d7f74984912487d3" }, "log_final": "tabs: do not use target\u003d_blank", "ranges": [ {"l": 1,"o": 1003,"f": 1099}]}, {"ord":132,"orig_oid":{ "oid": "80f12b3e7e43edcb06aea9811b790b16ca204c81", "alias": []}, "final_oid":{ "oid": "80f12b3e7e43edcb06aea9811b790b16ca204c81", "alias": []}, "sig_orig": { "git_time": { "time": 1462989009, "offset": 0 }, "name": "Juuso Lapinlampi", "email": "wub@partyvan.eu", "md5": "ede22b0e3ca9fb9273aa00a3e614335e" }, "log_orig": "ui-shared: Simplify cgit_print_error_page() logic", "sig_final": { "git_time": { "time": 1462989009, "offset": 0 }, "name": "Juuso Lapinlampi", "email": "wub@partyvan.eu", "md5": "ede22b0e3ca9fb9273aa00a3e614335e" }, "log_final": "ui-shared: Simplify cgit_print_error_page() logic", "ranges": [ {"l": 1,"o": 795,"f": 877}, {"l": 1,"o": 799,"f": 881}]}, {"ord":133,"orig_oid":{ "oid": "8d05b398bb1f4effcb59dddc62a3ea1f021f8631", "alias": []}, "final_oid":{ "oid": "8d05b398bb1f4effcb59dddc62a3ea1f021f8631", "alias": []}, "sig_orig": { "git_time": { "time": 1462989854, "offset": 0 }, "name": "Juuso Lapinlampi", "email": "wub@partyvan.eu", "md5": "ede22b0e3ca9fb9273aa00a3e614335e" }, "log_orig": "ui-shared: HTML-ize DOCTYPE and \u003chtml\u003e", "sig_final": { "git_time": { "time": 1462989854, "offset": 0 }, "name": "Juuso Lapinlampi", "email": "wub@partyvan.eu", "md5": "ede22b0e3ca9fb9273aa00a3e614335e" }, "log_final": "ui-shared: HTML-ize DOCTYPE and \u003chtml\u003e", "ranges": [ {"l": 1,"o": 15,"f": 16}, {"l": 1,"o": 725,"f": 801}]}, {"ord":134,"orig_oid":{ "oid": "9984e7ab49c59e49a0d7e62c3435e7133f7a53ec", "alias": []}, "final_oid":{ "oid": "9984e7ab49c59e49a0d7e62c3435e7133f7a53ec", "alias": []}, "sig_orig": { "git_time": { "time": 1464106518, "offset": 120 }, "name": "Lukas Fleischer", "email": "lfleischer@lfos.de", "md5": "564a12abc584fef24e562ae9881c45bb" }, "log_orig": "Avoid ambiguities when prettifying snapshot names", "sig_final": { "git_time": { "time": 1464106518, "offset": 120 }, "name": "Lukas Fleischer", "email": "lfleischer@lfos.de", "md5": "564a12abc584fef24e562ae9881c45bb" }, "log_final": "Avoid ambiguities when prettifying snapshot names", "ranges": [ {"l": 3,"o": 1072,"f": 1171}, {"l": 6,"o": 1076,"f": 1175}, {"l": 1,"o": 1083,"f": 1182}, {"l": 5,"o": 1087,"f": 1186}]}, {"ord":135,"orig_oid":{ "oid": "590ba455d694deaf2ec206510cf7f047ac365a96", "alias": []}, "final_oid":{ "oid": "590ba455d694deaf2ec206510cf7f047ac365a96", "alias": []}, "sig_orig": { "git_time": { "time": 1467788881, "offset": 0 }, "name": "Eric Wong", "email": "normalperson@yhbt.net", "md5": "18813f71506ebad74179bf8c5a136696" }, "log_orig": "ui-shared: fix segfault when defbranch is NULL", "sig_final": { "git_time": { "time": 1467788881, "offset": 0 }, "name": "Eric Wong", "email": "normalperson@yhbt.net", "md5": "18813f71506ebad74179bf8c5a136696" }, "log_final": "ui-shared: fix segfault when defbranch is NULL", "ranges": [ {"l": 1,"o": 256,"f": 303}]}, {"ord":136,"orig_oid":{ "oid": "bead27b730526e4501ebaeb3b7c1116cd09f7b93", "alias": []}, "final_oid":{ "oid": "bead27b730526e4501ebaeb3b7c1116cd09f7b93", "alias": []}, "sig_orig": { "git_time": { "time": 1470582810, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: fix decl-after-statement warnings", "sig_final": { "git_time": { "time": 1470582810, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: fix decl-after-statement warnings", "ranges": [ {"l": 3,"o": 71,"f": 72}, {"l": 2,"o": 353,"f": 405}, {"l": 2,"o": 718,"f": 792}]}, {"ord":137,"orig_oid":{ "oid": "6bef566f99c7f85cbab9692e22b183ae99f33c1d", "alias": []}, "final_oid":{ "oid": "6bef566f99c7f85cbab9692e22b183ae99f33c1d", "alias": []}, "sig_orig": { "git_time": { "time": 1475179821, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "ui-shared: replace 'unsigned char sha1[20]' with 'struct object_id oid'", "sig_final": { "git_time": { "time": 1475179821, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "ui-shared: replace 'unsigned char sha1[20]' with 'struct object_id oid'", "ranges": [ {"l": 1,"o": 1077,"f": 1174}, {"l": 1,"o": 1084,"f": 1181}, {"l": 3,"o": 1086,"f": 1183}]}, {"ord":138,"orig_oid":{ "oid": "1b4ef6783a71962f8b5da3a23f2830f0f0f55ea0", "alias": []}, "final_oid":{ "oid": "1b4ef6783a71962f8b5da3a23f2830f0f0f55ea0", "alias": []}, "sig_orig": { "git_time": { "time": 1487507268, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: don't print path crumbs without a repo", "sig_final": { "git_time": { "time": 1487507268, "offset": 0 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: don't print path crumbs without a repo", "ranges": [ {"l": 1,"o": 1042,"f": 1139}]}, {"ord":139,"orig_oid":{ "oid": "9337c7ee83221d48d02c3c7b5c9dcbaca23ad92f", "alias": []}, "final_oid":{ "oid": "9337c7ee83221d48d02c3c7b5c9dcbaca23ad92f", "alias": []}, "sig_orig": { "git_time": { "time": 1506919146, "offset": -300 }, "name": "Jeff Smith", "email": "whydoubt@gmail.com", "md5": "f36a711ac1cc8c7989949f564dac178a" }, "log_orig": "ui-tree: move set_title_from_path to ui-shared", "sig_final": { "git_time": { "time": 1506919146, "offset": -300 }, "name": "Jeff Smith", "email": "whydoubt@gmail.com", "md5": "f36a711ac1cc8c7989949f564dac178a" }, "log_final": "ui-tree: move set_title_from_path to ui-shared", "ranges": [ {"l": 31,"o": 1114,"f": 1224}]}, {"ord":140,"orig_oid":{ "oid": "f6ffe40d1a2c985494e48dc2d36663ffde1e6044", "alias": []}, "final_oid":{ "oid": "f6ffe40d1a2c985494e48dc2d36663ffde1e6044", "alias": []}, "sig_orig": { "git_time": { "time": 1506919147, "offset": -300 }, "name": "Jeff Smith", "email": "whydoubt@gmail.com", "md5": "f36a711ac1cc8c7989949f564dac178a" }, "log_orig": "ui-shared: make a char* parameter const", "sig_final": { "git_time": { "time": 1506919147, "offset": -300 }, "name": "Jeff Smith", "email": "whydoubt@gmail.com", "md5": "f36a711ac1cc8c7989949f564dac178a" }, "log_final": "ui-shared: make a char* parameter const", "ranges": [ {"l": 1,"o": 350,"f": 402}, {"l": 7,"o": 383,"f": 435}]}, {"ord":141,"orig_oid":{ "oid": "1649afdc9b2febe9ab7e1abe1956c5dcaff93aa1", "alias": []}, "final_oid":{ "oid": "1649afdc9b2febe9ab7e1abe1956c5dcaff93aa1", "alias": []}, "sig_orig": { "git_time": { "time": 1506919149, "offset": -300 }, "name": "Jeff Smith", "email": "whydoubt@gmail.com", "md5": "f36a711ac1cc8c7989949f564dac178a" }, "log_orig": "ui-tree: link to blame UI if enabled", "sig_final": { "git_time": { "time": 1506919149, "offset": -300 }, "name": "Jeff Smith", "email": "whydoubt@gmail.com", "md5": "f36a711ac1cc8c7989949f564dac178a" }, "log_final": "ui-tree: link to blame UI if enabled", "ranges": [ {"l": 1,"o": 3,"f": 3}, {"l": 6,"o": 307,"f": 353}, {"l": 4,"o": 487,"f": 533}, {"l": 6,"o": 996,"f": 1083}]}, {"ord":142,"orig_oid":{ "oid": "98abe5bb9e6297a5dcbae206e00352c8630d922e", "alias": []}, "final_oid":{ "oid": "98abe5bb9e6297a5dcbae206e00352c8630d922e", "alias": []}, "sig_orig": { "git_time": { "time": 1508007736, "offset": 180 }, "name": "Ville Skyttä", "email": "ville.skytta@iki.fi", "md5": "408c72fcc8d8cbdad230ca3277c74bf2" }, "log_orig": "ui-shared: use type\u003d'search' for the search box", "sig_final": { "git_time": { "time": 1508007736, "offset": 180 }, "name": "Ville Skyttä", "email": "ville.skytta@iki.fi", "md5": "408c72fcc8d8cbdad230ca3277c74bf2" }, "log_final": "ui-shared: use type\u003d'search' for the search box", "ranges": [ {"l": 1,"o": 1030,"f": 1117}, {"l": 1,"o": 1045,"f": 1131}]}, {"ord":143,"orig_oid":{ "oid": "c1572bb5ec4540b5008490cf471cc4a5e65ef728", "alias": []}, "final_oid":{ "oid": "c1572bb5ec4540b5008490cf471cc4a5e65ef728", "alias": []}, "sig_orig": { "git_time": { "time": 1522502401, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "Add \u0022snapshot-prefix\u0022 repo configuration", "sig_final": { "git_time": { "time": 1522502401, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "Add \u0022snapshot-prefix\u0022 repo configuration", "ranges": [ {"l": 2,"o": 156,"f": 161}, {"l": 4,"o": 159,"f": 164}]}, {"ord":144,"orig_oid":{ "oid": "5b1f42ffeec7e315fc4fcff5145e5b0adca30715", "alias": []}, "final_oid":{ "oid": "5b1f42ffeec7e315fc4fcff5145e5b0adca30715", "alias": []}, "sig_orig": { "git_time": { "time": 1522505161, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: use the same snapshot logic as ui-refs", "sig_final": { "git_time": { "time": 1522505161, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: use the same snapshot logic as ui-refs", "ranges": [ {"l": 1,"o": 1118,"f": 1196}, {"l": 6,"o": 1121,"f": 1199}]}, {"ord":145,"orig_oid":{ "oid": "e491eaa5df3055dc419d9d3cb75421e8a8c43944", "alias": []}, "final_oid":{ "oid": "e491eaa5df3055dc419d9d3cb75421e8a8c43944", "alias": []}, "sig_orig": { "git_time": { "time": 1522505339, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "ui-shared: pass separator in to cgit_print_snapshot_links()", "sig_final": { "git_time": { "time": 1522505339, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "ui-shared: pass separator in to cgit_print_snapshot_links()", "ranges": [ {"l": 2,"o": 1114,"f": 1191}, {"l": 1,"o": 1136,"f": 1220}]}, {"ord":146,"orig_oid":{ "oid": "c712d5ac434b9ee8cb4e63a173a2538e1878637f", "alias": []}, "final_oid":{ "oid": "c712d5ac434b9ee8cb4e63a173a2538e1878637f", "alias": []}, "sig_orig": { "git_time": { "time": 1522509348, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_orig": "snapshot: support archive signatures", "sig_final": { "git_time": { "time": 1522509348, "offset": 60 }, "name": "John Keeping", "email": "john@keeping.me.uk", "md5": "aea7d8738c91da1cb0dfa9d86f2bbc47" }, "log_final": "snapshot: support archive signatures", "ranges": [ {"l": 7,"o": 1136,"f": 1213}]}, {"ord":147,"orig_oid":{ "oid": "fb804a353780633b23a5452b3893fcc9f3705431", "alias": []}, "final_oid":{ "oid": "fb804a353780633b23a5452b3893fcc9f3705431", "alias": []}, "sig_orig": { "git_time": { "time": 1527668892, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "git: update to v2.17.1", "sig_final": { "git_time": { "time": 1527668892, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "git: update to v2.17.1", "ranges": [ {"l": 1,"o": 548,"f": 594}]}, {"ord":148,"orig_oid":{ "oid": "e65ea965a07c7d48d269b2d2278d0101f7ac2b48", "alias": []}, "final_oid":{ "oid": "e65ea965a07c7d48d269b2d2278d0101f7ac2b48", "alias": []}, "sig_orig": { "git_time": { "time": 1528144066, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "print git version string in footer", "sig_final": { "git_time": { "time": 1528144066, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "print git version string in footer", "ranges": [ {"l": 1,"o": 13,"f": 13}, {"l": 2,"o": 789,"f": 860}]}, {"ord":149,"orig_oid":{ "oid": "2f8648ff7f5c7119ab035c134504f04eefe068fb", "alias": []}, "final_oid":{ "oid": "2f8648ff7f5c7119ab035c134504f04eefe068fb", "alias": []}, "sig_orig": { "git_time": { "time": 1528698419, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_orig": "snapshot: strip bit from struct cgit_snapshot_format", "sig_final": { "git_time": { "time": 1528698419, "offset": 120 }, "name": "Christian Hesse", "email": "mail@eworm.de", "md5": "d39edb2018ca5544c1c390a8266096fb" }, "log_final": "snapshot: strip bit from struct cgit_snapshot_format", "ranges": [ {"l": 1,"o": 1130,"f": 1207}]}, {"ord":150,"orig_oid":{ "oid": "75836a8e8678049d15e4a65c8883d0270be3b93e", "alias": []}, "final_oid":{ "oid": "75836a8e8678049d15e4a65c8883d0270be3b93e", "alias": []}, "sig_orig": { "git_time": { "time": 1529499794, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "noheader: place branch combo on tabs if no header", "sig_final": { "git_time": { "time": 1529499794, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "noheader: place branch combo on tabs if no header", "ranges": [ {"l": 13,"o": 930,"f": 990}, {"l": 1,"o": 976,"f": 1036}, {"l": 1,"o": 1000,"f": 1067}, {"l": 7,"o": 1002,"f": 1069}, {"l": 2,"o": 1061,"f": 1124}]}, {"ord":151,"orig_oid":{ "oid": "05fcd405c16c428d30b1a29e8e81c9ab04de4327", "alias": []}, "final_oid":{ "oid": "05fcd405c16c428d30b1a29e8e81c9ab04de4327", "alias": []}, "sig_orig": { "git_time": { "time": 1529749553, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "config: add js", "sig_final": { "git_time": { "time": 1529749553, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "config: add js", "ranges": [ {"l": 9,"o": 780,"f": 780}, {"l": 2,"o": 815,"f": 815}]}, {"ord":152,"orig_oid":{ "oid": "7def56a6bf82133385646222c74a5f3790803d45", "alias": []}, "final_oid":{ "oid": "7def56a6bf82133385646222c74a5f3790803d45", "alias": []}, "sig_orig": { "git_time": { "time": 1529823920, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "cgit.css: add dynamic age update", "sig_final": { "git_time": { "time": 1529823920, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "cgit.css: add dynamic age update", "ranges": [ {"l": 1,"o": 674,"f": 674}]}, {"ord":153,"orig_oid":{ "oid": "8125f15289b46f1efb984e4128e45043af1785da", "alias": [ "refs/heads/dynamic-aging"]}, "final_oid":{ "oid": "8125f15289b46f1efb984e4128e45043af1785da", "alias": [ "refs/heads/dynamic-aging"]}, "sig_orig": { "git_time": { "time": 1529828375, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "ui-shared: add now-dynamic age to footer", "sig_final": { "git_time": { "time": 1529828375, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "ui-shared: add now-dynamic age to footer", "ranges": [ {"l": 3,"o": 863,"f": 863}]}, {"ord":154,"orig_oid":{ "oid": "7e3c9c387d077efda69f84077fff4ce7fee3a1ad", "alias": []}, "final_oid":{ "oid": "7e3c9c387d077efda69f84077fff4ce7fee3a1ad", "alias": []}, "sig_orig": { "git_time": { "time": 1530010641, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "cgit_repobasename: convert to allocated result", "sig_final": { "git_time": { "time": 1530010641, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "cgit_repobasename: convert to allocated result", "ranges": [ {"l": 2,"o": 130,"f": 130}, {"l": 24,"o": 133,"f": 133}, {"l": 2,"o": 159,"f": 159}, {"l": 1,"o": 163,"f": 163}]}, {"ord":155,"orig_oid":{ "oid": "00dd78e902ab661534e800938cb474d0620148fa", "alias": []}, "final_oid":{ "oid": "00dd78e902ab661534e800938cb474d0620148fa", "alias": []}, "sig_orig": { "git_time": { "time": 1530579730, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "ui-shared: add helper for generating non-urlencoded links", "sig_final": { "git_time": { "time": 1530579730, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "ui-shared: add helper for generating non-urlencoded links", "ranges": [ {"l": 32,"o": 229,"f": 229}]}, {"ord":156,"orig_oid":{ "oid": "8a3a2f9dad084a5d1b40f3fc0c96aac3b35949a9", "alias": []}, "final_oid":{ "oid": "8a3a2f9dad084a5d1b40f3fc0c96aac3b35949a9", "alias": []}, "sig_orig": { "git_time": { "time": 1530588839, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "css: change to be a list", "sig_final": { "git_time": { "time": 1530588839, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "css: change to be a list", "ranges": [ {"l": 11,"o": 737,"f": 769}, {"l": 1,"o": 748,"f": 789}, {"l": 6,"o": 768,"f": 809}]}, {"ord":157,"orig_oid":{ "oid": "b13d015ebe656ca7d345c23d3de234575a32ff31", "alias": []}, "final_oid":{ "oid": "b13d015ebe656ca7d345c23d3de234575a32ff31", "alias": []}, "sig_orig": { "git_time": { "time": 1530589900, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_orig": "desc: add root-desc-html and repo.desc-html", "sig_final": { "git_time": { "time": 1530589900, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "log_final": "desc: add root-desc-html and repo.desc-html", "ranges": [ {"l": 6,"o": 999,"f": 1044}, {"l": 2,"o": 1010,"f": 1055}]}], "contrib":[ {"l": 450,"o": 0}, {"l": 208,"o": 88}, {"l": 161,"o": 81}, {"l": 126,"o": 154}, {"l": 76,"o": 67}, {"l": 56,"o": 141}, {"l": 48,"o": 103}, {"l": 37,"o": 148}, {"l": 18,"o": 123}, {"l": 12,"o": 64}, {"l": 10,"o": 15}, {"l": 8,"o": 58}, {"l": 8,"o": 75}, {"l": 7,"o": 79}, {"l": 7,"o": 60}, {"l": 5,"o": 77}, {"l": 4,"o": 133}, {"l": 3,"o": 135}, {"l": 3,"o": 42}, {"l": 2,"o": 66}, {"l": 2,"o": 142}, {"l": 1,"o": 65}, {"l": 1,"o": 80}, {"l": 1,"o": 57}],"g": 222634,"chitpc": 0,"ehitpc": 0,"indexed":0 }], "ab": 1, "si": 0, "db":1, "di":0, "sat":0, "lfc": "0000"}