diff --git a/commands/command_clone.go b/commands/command_clone.go index 0bf1ca71..dd5ecdbf 100644 --- a/commands/command_clone.go +++ b/commands/command_clone.go @@ -85,17 +85,19 @@ func cloneCommand(cmd *cobra.Command, args []string) { remote = "origin" } - includeArg, excludeArg := getIncludeExcludeArgs(cmd) - filter := buildFilepathFilter(cfg, includeArg, excludeArg) - if cloneFlags.NoCheckout || cloneFlags.Bare { - // If --no-checkout or --bare then we shouldn't check out, just fetch instead - cfg.CurrentRemote = remote - fetchRef("HEAD", filter) - } else { - pull(remote, filter) - err := postCloneSubmodules(args) - if err != nil { - Exit("Error performing 'git lfs pull' for submodules: %v", err) + if ref, err := git.CurrentRef(); err == nil { + includeArg, excludeArg := getIncludeExcludeArgs(cmd) + filter := buildFilepathFilter(cfg, includeArg, excludeArg) + if cloneFlags.NoCheckout || cloneFlags.Bare { + // If --no-checkout or --bare then we shouldn't check out, just fetch instead + cfg.CurrentRemote = remote + fetchRef(ref.Name, filter) + } else { + pull(remote, filter) + err := postCloneSubmodules(args) + if err != nil { + Exit("Error performing 'git lfs pull' for submodules: %v", err) + } } } diff --git a/test/test-clone.sh b/test/test-clone.sh index 2a325fdf..c394ad21 100755 --- a/test/test-clone.sh +++ b/test/test-clone.sh @@ -575,3 +575,35 @@ begin_test "clone in current directory" popd ) end_test + +begin_test "clone empty repository" +( + set -e + + reponame="clone_empty" + setup_remote_repo "$reponame" + + cd "$TRASHDIR" + git lfs clone "$GITSERVER/$reponame" "$reponame" 2>&1 | tee clone.log + if [ "0" -ne "${PIPESTATUS[0]}" ]; then + echo >&2 "fatal: expected clone to succeed ..." + exit 1 + fi +) +end_test + +begin_test "clone bare empty repository" +( + set -e + + reponame="clone_bare_empty" + setup_remote_repo "$reponame" + + cd "$TRASHDIR" + git lfs clone "$GITSERVER/$reponame" "$reponame" --bare 2>&1 | tee clone.log + if [ "0" -ne "${PIPESTATUS[0]}" ]; then + echo >&2 "fatal: expected clone to succeed ..." + exit 1 + fi +) +end_test \ No newline at end of file