diff options
author | matej.risek <matej.risek@hashicorp.com> | 2023-05-09 11:54:55 +0200 |
---|---|---|
committer | matej.risek <matej.risek@hashicorp.com> | 2023-06-05 13:59:34 +0200 |
commit | 2d6af16bf6d051cb3014c9970f3ea813e54f73b0 (patch) | |
tree | 915862150ed9b968d8da6900ebe9d48b71b4d62e /repository_test.go | |
parent | 1dbd729a387edb61c89f088cd68040085e6c81bb (diff) | |
download | go-git-2d6af16bf6d051cb3014c9970f3ea813e54f73b0.tar.gz |
git: add a clone option to allow for shallow cloning of submodules
This option matches the git clone option --shallow-submodules.
https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---no-shallow-submodules
Diffstat (limited to 'repository_test.go')
-rw-r--r-- | repository_test.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/repository_test.go b/repository_test.go index 0080a83..79a884b 100644 --- a/repository_test.go +++ b/repository_test.go @@ -884,6 +884,43 @@ func (s *RepositorySuite) TestPlainCloneWithRecurseSubmodules(c *C) { c.Assert(cfg.Submodules, HasLen, 2) } +func (s *RepositorySuite) TestPlainCloneWithShallowSubmodules(c *C) { + if testing.Short() { + c.Skip("skipping test in short mode.") + } + + dir, clean := s.TemporalDir() + defer clean() + + path := fixtures.ByTag("submodule").One().Worktree().Root() + mainRepo, err := PlainClone(dir, false, &CloneOptions{ + URL: path, + RecurseSubmodules: 1, + ShallowSubmodules: true, + }) + c.Assert(err, IsNil) + + mainWorktree, err := mainRepo.Worktree() + c.Assert(err, IsNil) + + submodule, err := mainWorktree.Submodule("basic") + c.Assert(err, IsNil) + + subRepo, err := submodule.Repository() + c.Assert(err, IsNil) + + lr, err := subRepo.Log(&LogOptions{}) + c.Assert(err, IsNil) + + commitCount := 0 + for _, err := lr.Next(); err == nil; _, err = lr.Next() { + commitCount++ + } + c.Assert(err, IsNil) + + c.Assert(commitCount, Equals, 1) +} + func (s *RepositorySuite) TestPlainCloneNoCheckout(c *C) { dir, clean := s.TemporalDir() defer clean() |