summaryrefslogtreecommitdiff
path: root/merge-recursive.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-01-30 16:03:10 -0800
committerJunio C Hamano <gitster@pobox.com>2010-01-30 16:03:10 -0800
commit00d3278c8534a8244ae3447189401111e017fd5d (patch)
treef1c19903bc10ffe4816642040080fb6cfd5da376 /merge-recursive.h
parentb9b727ddb3c9e005bc4e9af0b990b6ef06d7f621 (diff)
parentb319ef70a94731a5c6f18d07a49d5dda3f06f5d3 (diff)
Merge commit 'b319ef7' into jc/maint-fix-test-perm
* commit 'b319ef7': (8132 commits) Add a small patch-mode testing library git-apply--interactive: Refactor patch mode code t8005: Nobody writes Russian in shift_jis Fix severe breakage in "git-apply --whitespace=fix" Update release notes for 1.6.4 After renaming a section, print any trailing variable definitions Make section_name_match start on '[', and return the length on success send-email: detect cycles in alias expansion Show the presence of untracked files in the bash prompt. SunOS grep does not understand -C<n> nor -e Fix export_marks() error handling. git repack: keep commits hidden by a graft Add a test showing that 'git repack' throws away grafted-away parents git branch: clean up detached branch handling git branch: avoid unnecessary object lookups git branch: fix performance problem git svn: fix shallow clone when upstream revision is too new do_one_ref(): null_sha1 check is not about broken ref configure.ac: properly unset NEEDS_SSL_WITH_CRYPTO when sha1 func is missing janitor: useless checks before free ...
Diffstat (limited to 'merge-recursive.h')
-rw-r--r--merge-recursive.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/merge-recursive.h b/merge-recursive.h
new file mode 100644
index 0000000000..fd138ca140
--- /dev/null
+++ b/merge-recursive.h
@@ -0,0 +1,48 @@
+#ifndef MERGE_RECURSIVE_H
+#define MERGE_RECURSIVE_H
+
+#include "string-list.h"
+
+struct merge_options {
+ const char *branch1;
+ const char *branch2;
+ unsigned subtree_merge : 1;
+ unsigned buffer_output : 1;
+ int verbosity;
+ int diff_rename_limit;
+ int merge_rename_limit;
+ int call_depth;
+ struct strbuf obuf;
+ struct string_list current_file_set;
+ struct string_list current_directory_set;
+};
+
+/* merge_trees() but with recursive ancestor consolidation */
+int merge_recursive(struct merge_options *o,
+ struct commit *h1,
+ struct commit *h2,
+ struct commit_list *ancestors,
+ struct commit **result);
+
+/* rename-detecting three-way merge, no recursion */
+int merge_trees(struct merge_options *o,
+ struct tree *head,
+ struct tree *merge,
+ struct tree *common,
+ struct tree **result);
+
+/*
+ * "git-merge-recursive" can be fed trees; wrap them into
+ * virtual commits and call merge_recursive() proper.
+ */
+int merge_recursive_generic(struct merge_options *o,
+ const unsigned char *head,
+ const unsigned char *merge,
+ int num_ca,
+ const unsigned char **ca,
+ struct commit **result);
+
+void init_merge_options(struct merge_options *o);
+struct tree *write_tree_from_memory(struct merge_options *o);
+
+#endif