summaryrefslogtreecommitdiff
path: root/revision.c
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2007-07-10 13:50:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-07-11 21:59:31 (GMT)
commit36d56de649aacdbf555d2c9743c514cc52368f2c (patch)
tree9331753d9ae33d057767444b8dad90de2b9c8639 /revision.c
parent835252272e0192bd26983e22428480c5c89775fb (diff)
downloadgit-36d56de649aacdbf555d2c9743c514cc52368f2c.zip
git-36d56de649aacdbf555d2c9743c514cc52368f2c.tar.gz
git-36d56de649aacdbf555d2c9743c514cc52368f2c.tar.bz2
Fix --cherry-pick with given paths
If you say --cherry-pick, you do not want to see patches which are in the upstream. If you specify paths with that, what you usually expect is that only those parts of the patches are looked at which actually touch the given paths. With this patch, that expectation is met. Noticed by Sam Vilain. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
-rw-r--r--revision.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/revision.c b/revision.c
index 33ee9ee..27cce09 100644
--- a/revision.c
+++ b/revision.c
@@ -437,7 +437,7 @@ static int add_parents_to_list(struct rev_info *revs, struct commit *commit, str
return 0;
}
-static void cherry_pick_list(struct commit_list *list)
+static void cherry_pick_list(struct commit_list *list, struct rev_info *revs)
{
struct commit_list *p;
int left_count = 0, right_count = 0;
@@ -458,6 +458,11 @@ static void cherry_pick_list(struct commit_list *list)
left_first = left_count < right_count;
init_patch_ids(&ids);
+ if (revs->diffopt.nr_paths) {
+ ids.diffopts.nr_paths = revs->diffopt.nr_paths;
+ ids.diffopts.paths = revs->diffopt.paths;
+ ids.diffopts.pathlens = revs->diffopt.pathlens;
+ }
/* Compute patch-ids for one side */
for (p = list; p; p = p->next) {
@@ -546,7 +551,7 @@ static int limit_list(struct rev_info *revs)
p = &commit_list_insert(commit, p)->next;
}
if (revs->cherry_pick)
- cherry_pick_list(newlist);
+ cherry_pick_list(newlist, revs);
revs->commits = newlist;
return 0;