File tree 1 file changed +15
-0
lines changed
1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change 14
14
#include "utf8.h"
15
15
#include "quote.h"
16
16
#include "thread-utils.h"
17
+ #include "dir.h"
17
18
18
19
const char git_attr__true [] = "(builtin)true" ;
19
20
const char git_attr__false [] = "\0(builtin)false" ;
@@ -744,6 +745,20 @@ static struct attr_stack *read_attr_from_index(struct index_state *istate,
744
745
if (!istate )
745
746
return NULL ;
746
747
748
+ /*
749
+ * The .gitattributes file only applies to files within its
750
+ * parent directory. In the case of cone-mode sparse-checkout,
751
+ * the .gitattributes file is sparse if and only if all paths
752
+ * within that directory are also sparse. Thus, don't load the
753
+ * .gitattributes file since it will not matter.
754
+ *
755
+ * In the case of a sparse index, it is critical that we don't go
756
+ * looking for a .gitattributes file, as doing so would cause the
757
+ * index to expand.
758
+ */
759
+ if (!path_in_cone_mode_sparse_checkout (path , istate ))
760
+ return NULL ;
761
+
747
762
buf = read_blob_data_from_index (istate , path , NULL );
748
763
if (!buf )
749
764
return NULL ;
You can’t perform that action at this time.
0 commit comments