diff options
author | John Keeping | 2016-03-14 22:41:14 +0000 |
---|---|---|
committer | Jason A. Donenfeld | 2016-10-12 13:28:15 +0200 |
commit | 5fe88a9c81517b1a8a93d930c738cbb6f71dec2a (patch) | |
tree | cf73550f05a2aa7c67aed51cf9726fdd6a42a86c | |
parent | ui-repolist: fix memory leak (diff) | |
download | cgit-5fe88a9c81517b1a8a93d930c738cbb6f71dec2a.tar.gz cgit-5fe88a9c81517b1a8a93d930c738cbb6f71dec2a.zip |
patch: reapply path limit
This was originally applied added in commit eac1b67 (ui-patch: Apply path limit to generated patch, 2010-06-10) but the ability to limit patches to particular paths was lost in commit 455b598 (ui-patch.c: Use log_tree_commit() to generate diffs, 2013-08-20). The new output is slightly different from the original because Git's diff infrastructure doesn't give us a way to insert an annotation immediately after the "---" separator, so the commit has moved below the diff stat. Signed-off-by: John Keeping <john@keeping.me.uk>
-rw-r--r-- | ui-patch.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ui-patch.c b/ui-patch.c index fd6316b..ec7f352 100644 --- a/ui-patch.c +++ b/ui-patch.c | |||
@@ -18,9 +18,13 @@ void cgit_print_patch(const char *new_rev, const char *old_rev, | |||
18 | struct commit *commit; | 18 | struct commit *commit; |
19 | struct object_id new_rev_oid, old_rev_oid; | 19 | struct object_id new_rev_oid, old_rev_oid; |
20 | char rev_range[2 * 40 + 3]; | 20 | char rev_range[2 * 40 + 3]; |
21 | char *rev_argv[] = { NULL, "--reverse", "--format=email", rev_range }; | 21 | const char *rev_argv[] = { NULL, "--reverse", "--format=email", rev_range, "--", prefix }; |
22 | int rev_argc = ARRAY_SIZE(rev_argv); | ||
22 | char *patchname; | 23 | char *patchname; |
23 | 24 | ||
25 | if (!prefix) | ||
26 | rev_argc--; | ||
27 | |||
24 | if (!new_rev) | 28 | if (!new_rev) |
25 | new_rev = ctx.qry.head; | 29 | new_rev = ctx.qry.head; |
26 | 30 | ||
@@ -79,7 +83,9 @@ void cgit_print_patch(const char *new_rev, const char *old_rev, | |||
79 | rev.max_parents = 1; | 83 | rev.max_parents = 1; |
80 | rev.diffopt.output_format |= DIFF_FORMAT_DIFFSTAT | | 84 | rev.diffopt.output_format |= DIFF_FORMAT_DIFFSTAT | |
81 | DIFF_FORMAT_PATCH | DIFF_FORMAT_SUMMARY; | 85 | DIFF_FORMAT_PATCH | DIFF_FORMAT_SUMMARY; |
82 | setup_revisions(ARRAY_SIZE(rev_argv), (const char **)rev_argv, &rev, | 86 | if (prefix) |
87 | rev.diffopt.stat_sep = fmt("(limited to '%s')\n\n", prefix); | ||
88 | setup_revisions(ARRAY_SIZE(rev_argv), rev_argv, &rev, | ||
83 | NULL); | 89 | NULL); |
84 | prepare_revision_walk(&rev); | 90 | prepare_revision_walk(&rev); |
85 | 91 | ||