clone: prevent --reference to a shallow repository
[gitweb.git] / builtin / clone.c
index 874e0fd0b6e3ea4882783c0b2377016d93bd989d..900f56476ad9089ed2edb8ffc0b24cd7a11cf7af 100644 (file)
@@ -252,6 +252,12 @@ static int add_one_reference(struct string_list_item *item, void *cb_data)
                die(_("reference repository '%s' is not a local repository."),
                    item->string);
 
+       if (!access(mkpath("%s/shallow", ref_git), F_OK))
+               die(_("reference repository '%s' is shallow"), item->string);
+
+       if (!access(mkpath("%s/info/grafts", ref_git), F_OK))
+               die(_("reference repository '%s' is grafted"), item->string);
+
        strbuf_addf(&alternate, "%s/objects", ref_git);
        add_to_alternates_file(alternate.buf);
        strbuf_release(&alternate);