summaryrefslogtreecommitdiff
path: root/commit.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-09-09 14:33:16 -0700
committerJunio C Hamano <gitster@pobox.com>2013-09-09 14:33:16 -0700
commit4ab4a6dfb414230bb3e13ba65a1aa2606c6102f3 (patch)
treeb82e5312a7b54dcd85139b243ff688b7da737ab4 /commit.c
parent24703ead4b9391cbe71ce9978cbffdd6c3ecbaec (diff)
parent838f9a15667cfefa9e645c26627ce81ce7599915 (diff)
downloadgit-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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/commit.c b/commit.c
index a575564a15..de16a3c0a2 100644
--- a/commit.c
+++ b/commit.c
@@ -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) {