diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-09-09 14:33:16 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-09-09 14:33:16 -0700 |
commit | 4ab4a6dfb414230bb3e13ba65a1aa2606c6102f3 (patch) | |
tree | b82e5312a7b54dcd85139b243ff688b7da737ab4 /commit.c | |
parent | 24703ead4b9391cbe71ce9978cbffdd6c3ecbaec (diff) | |
parent | 838f9a15667cfefa9e645c26627ce81ce7599915 (diff) | |
download | git-4ab4a6dfb414230bb3e13ba65a1aa2606c6102f3.tar.gz |
Merge branch 'tr/log-full-diff-keep-true-parents'
Output from "git log --full-diff -- <pathspec>" looked strange,
because comparison was done with the previous ancestor that touched
the specified <pathspec>, causing the patches for paths outside the
pathspec to show more than the single commit has changed.
Tweak "git reflog -p" for the same reason using the same mechanism.
* tr/log-full-diff-keep-true-parents:
log: use true parents for diff when walking reflogs
log: use true parents for diff even when rewriting
Diffstat (limited to 'commit.c')
-rw-r--r-- | commit.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -377,6 +377,22 @@ unsigned commit_list_count(const struct commit_list *l) return c; } +struct commit_list *copy_commit_list(struct commit_list *list) +{ + struct commit_list *head = NULL; + struct commit_list **pp = &head; + while (list) { + struct commit_list *new; + new = xmalloc(sizeof(struct commit_list)); + new->item = list->item; + new->next = NULL; + *pp = new; + pp = &new->next; + list = list->next; + } + return head; +} + void free_commit_list(struct commit_list *list) { while (list) { |