Merge branch 'km/empty-repo-is-still-a-repo'

Running "git add" on a repository created inside the current
repository is an explicit indication that the user wants to add it
as a submodule, but when the HEAD of the inner repository is on an
unborn branch, it cannot be added as a submodule.  Worse, the files
in its working tree can be added as if they are a part of the outer
repository, which is not what the user wants.  These problems are
being addressed.

* km/empty-repo-is-still-a-repo:
  add: error appropriately on repository with no commits
  dir: do not traverse repositories with no commits
  submodule: refuse to add repository with no commits
This commit is contained in:
Junio C Hamano
2019-05-09 00:37:23 +09:00
7 changed files with 88 additions and 4 deletions

6
dir.c
View File

@ -1466,9 +1466,11 @@ static enum path_treatment treat_directory(struct dir_struct *dir,
return path_none;
}
if (!(dir->flags & DIR_NO_GITLINKS)) {
struct object_id oid;
if (resolve_gitlink_ref(dirname, "HEAD", &oid) == 0)
struct strbuf sb = STRBUF_INIT;
strbuf_addstr(&sb, dirname);
if (is_nonbare_repository_dir(&sb))
return exclude ? path_excluded : path_untracked;
strbuf_release(&sb);
}
return path_recurse;
}