aboutsummaryrefslogtreecommitdiffstats
path: root/repository_test.go
diff options
context:
space:
mode:
authormatej.risek <matej.risek@hashicorp.com>2023-05-09 11:54:55 +0200
committermatej.risek <matej.risek@hashicorp.com>2023-06-05 13:59:34 +0200
commit2d6af16bf6d051cb3014c9970f3ea813e54f73b0 (patch)
tree915862150ed9b968d8da6900ebe9d48b71b4d62e /repository_test.go
parent1dbd729a387edb61c89f088cd68040085e6c81bb (diff)
downloadgo-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.go37
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()