int cgit_cache_static_ttl = -1;
int cgit_cache_max_create_time = 5;
int cgit_summary_log = 0;
+int cgit_renamelimit = -1;
int cgit_max_msg_len = 60;
int cgit_max_repodesc_len = 60;
cgit_summary_log = atoi(value);
else if (!strcmp(name, "agefile"))
cgit_agefile = xstrdup(value);
+ else if (!strcmp(name, "renamelimit"))
+ cgit_renamelimit = atoi(value);
else if (!strcmp(name, "repo.group"))
cgit_repo_group = xstrdup(value);
else if (!strcmp(name, "repo.url"))
void cgit_diff_tree(const unsigned char *old_sha1,
const unsigned char *new_sha1,
- filepair_fn fn)
+ filepair_fn fn, const char *prefix)
{
struct diff_options opt;
int ret;
+ int prefixlen;
diff_setup(&opt);
opt.output_format = DIFF_FORMAT_CALLBACK;
opt.detect_rename = 1;
+ opt.rename_limit = cgit_renamelimit;
opt.recursive = 1;
opt.format_callback = cgit_diff_tree_cb;
opt.format_callback_data = fn;
+ if (prefix) {
+ opt.nr_paths = 1;
+ opt.paths = &prefix;
+ prefixlen = strlen(prefix);
+ opt.pathlens = &prefixlen;
+ }
diff_setup_done(&opt);
if (old_sha1 && !is_null_sha1(old_sha1))
if (commit->parents)
old_sha1 = commit->parents->item->object.sha1;
- cgit_diff_tree(old_sha1, commit->object.sha1, fn);
+ cgit_diff_tree(old_sha1, commit->object.sha1, fn, NULL);
}