Do linear-time/space rename logic for exact renames
[gitweb.git] / diffcore.h
index eb618b1ec00113dabcd5231f141f82e1cdfdca46..cc96c20734bf4184970f5381416637cf6e45ea13 100644 (file)
@@ -29,7 +29,9 @@ struct diff_filespec {
        void *cnt_data;
        const char *funcname_pattern_ident;
        unsigned long size;
+       int count;               /* Reference count */
        int xfrm_flags;          /* for use by the xfrm */
+       int rename_used;         /* Count of rename users */
        unsigned short mode;     /* file mode */
        unsigned sha1_valid : 1; /* if true, use sha1 and trust mode;
                                  * if false, use the name and read from
@@ -43,6 +45,7 @@ struct diff_filespec {
 };
 
 extern struct diff_filespec *alloc_filespec(const char *);
+extern void free_filespec(struct diff_filespec *);
 extern void fill_filespec(struct diff_filespec *, const unsigned char *,
                          unsigned short);
 
@@ -56,7 +59,6 @@ struct diff_filepair {
        struct diff_filespec *two;
        unsigned short int score;
        char status; /* M C R N D U (see Documentation/diff-format.txt) */
-       unsigned source_stays : 1; /* all of R/C are copies */
        unsigned broken_pair : 1;
        unsigned renamed_pair : 1;
        unsigned is_unmerged : 1;