Allow for creating raw diffs with cgit_print_diff() This adds a parameter to cgit_print_diff() to create raw diffs, using the same format as `git diff <commit>`. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
Lukas Fleischer cgit@cryptocrack.de
Wed, 14 Aug 2013 10:50:32 +0200
4 files changed,
12 insertions(+),
4 deletions(-)
M
ui-commit.c
→
ui-commit.c
@@ -137,7 +137,7 @@ if (parents)
tmp = sha1_to_hex(commit->parents->item->object.sha1); else tmp = NULL; - cgit_print_diff(ctx.qry.sha1, tmp, prefix, 0); + cgit_print_diff(ctx.qry.sha1, tmp, prefix, 0, 0); } strbuf_release(¬es); cgit_free_commitinfo(info);
M
ui-diff.c
→
ui-diff.c
@@ -358,7 +358,7 @@ html("</div>");
} void cgit_print_diff(const char *new_rev, const char *old_rev, - const char *prefix, int show_ctrls) + const char *prefix, int show_ctrls, int raw) { enum object_type type; unsigned long size;@@ -396,6 +396,14 @@ if (!commit2 || parse_commit(commit2)) {
cgit_print_error("Bad commit: %s", sha1_to_hex(old_rev_sha1)); return; } + } + + if (raw) { + ctx.page.mimetype = "text/plain"; + cgit_print_http_headers(&ctx); + cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb_raw, + prefix, 0); + return; } use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff;
M
ui-diff.h
→
ui-diff.h
@@ -4,7 +4,7 @@
extern void cgit_print_diff_ctrls(); extern void cgit_print_diff(const char *new_hex, const char *old_hex, - const char *prefix, int show_ctrls); + const char *prefix, int show_ctrls, int raw); extern struct diff_filespec *cgit_get_current_old_file(void); extern struct diff_filespec *cgit_get_current_new_file(void);