File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed
Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change 1414#include "utf8.h"
1515#include "quote.h"
1616#include "thread-utils.h"
17+ #include "dir.h"
1718
1819const char git_attr__true [] = "(builtin)true" ;
1920const char git_attr__false [] = "\0(builtin)false" ;
@@ -744,6 +745,20 @@ static struct attr_stack *read_attr_from_index(struct index_state *istate,
744745 if (!istate )
745746 return NULL ;
746747
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+
747762 buf = read_blob_data_from_index (istate , path , NULL );
748763 if (!buf )
749764 return NULL ;
You can’t perform that action at this time.
0 commit comments