should_pack_ref(): new function, extracted from `files_pack_refs()`
[gitweb.git] / unpack-trees.h
index ec74a9f19a47c39de61def9709da6d4d6f1dcbdb..6c48117b845fbf7b983852be302e4472c5e6d651 100644 (file)
@@ -8,7 +8,7 @@
 struct unpack_trees_options;
 struct exclude_list;
 
-typedef int (*merge_fn_t)(struct cache_entry **src,
+typedef int (*merge_fn_t)(const struct cache_entry * const *src,
                struct unpack_trees_options *options);
 
 enum unpack_trees_error_types {
@@ -21,6 +21,7 @@ enum unpack_trees_error_types {
        ERROR_SPARSE_NOT_UPTODATE_FILE,
        ERROR_WOULD_LOSE_ORPHANED_OVERWRITTEN,
        ERROR_WOULD_LOSE_ORPHANED_REMOVED,
+       ERROR_WOULD_LOSE_SUBMODULE,
        NB_UNPACK_TREES_ERROR_TYPES
 };
 
@@ -52,7 +53,6 @@ struct unpack_trees_options {
        const char *prefix;
        int cache_bottom;
        struct dir_struct *dir;
-       struct path_exclude_check *path_exclude_check;
        struct pathspec *pathspec;
        merge_fn_t fn;
        const char *msgs[NB_UNPACK_TREES_ERROR_TYPES];
@@ -78,9 +78,13 @@ struct unpack_trees_options {
 extern int unpack_trees(unsigned n, struct tree_desc *t,
                struct unpack_trees_options *options);
 
-int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o);
-int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o);
-int bind_merge(struct cache_entry **src, struct unpack_trees_options *o);
-int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o);
+int threeway_merge(const struct cache_entry * const *stages,
+                  struct unpack_trees_options *o);
+int twoway_merge(const struct cache_entry * const *src,
+                struct unpack_trees_options *o);
+int bind_merge(const struct cache_entry * const *src,
+              struct unpack_trees_options *o);
+int oneway_merge(const struct cache_entry * const *src,
+                struct unpack_trees_options *o);
 
 #endif