Skip to content

Commit

Permalink
Merge branch 'jk/patch-ids-no-merges' into maint
Browse files Browse the repository at this point in the history
"git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges to
avoid the wastage.

* jk/patch-ids-no-merges:
  patch-ids: refuse to compute patch-id for merge commit
  patch-ids: turn off rename detection
  • Loading branch information
gitster committed Sep 29, 2016
2 parents d7e74c9 + 7c81040 commit 35ca3e5
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions patch-ids.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,18 @@
#include "sha1-lookup.h"
#include "patch-ids.h"

static int patch_id_defined(struct commit *commit)
{
/* must be 0 or 1 parents */
return !commit->parents || !commit->parents->next;
}

int commit_patch_id(struct commit *commit, struct diff_options *options,
unsigned char *sha1, int diff_header_only)
{
if (!patch_id_defined(commit))
return -1;

if (commit->parents)
diff_tree_sha1(commit->parents->item->object.oid.hash,
commit->object.oid.hash, "", options);
Expand Down Expand Up @@ -45,6 +54,7 @@ int init_patch_ids(struct patch_ids *ids)
{
memset(ids, 0, sizeof(*ids));
diff_setup(&ids->diffopts);
ids->diffopts.detect_rename = 0;
DIFF_OPT_SET(&ids->diffopts, RECURSIVE);
diff_setup_done(&ids->diffopts);
hashmap_init(&ids->patches, (hashmap_cmp_fn)patch_id_cmp, 256);
Expand Down Expand Up @@ -76,6 +86,9 @@ struct patch_id *has_commit_patch_id(struct commit *commit,
{
struct patch_id patch;

if (!patch_id_defined(commit))
return NULL;

memset(&patch, 0, sizeof(patch));
if (init_patch_id_entry(&patch, commit, ids))
return NULL;
Expand All @@ -88,6 +101,9 @@ struct patch_id *add_commit_patch_id(struct commit *commit,
{
struct patch_id *key = xcalloc(1, sizeof(*key));

if (!patch_id_defined(commit))
return NULL;

if (init_patch_id_entry(key, commit, ids)) {
free(key);
return NULL;
Expand Down

0 comments on commit 35ca3e5

Please sign in to comment.