aboutsummaryrefslogtreecommitdiffstats
path: root/worktree_test.go
diff options
context:
space:
mode:
authorAxel Christ <axel.christ@inovex.de>2020-10-28 16:52:52 +0100
committerAxel Christ <axel.christ@inovex.de>2020-10-28 17:05:05 +0100
commit81d429bc0f13d05770fa5a824202e07f6f80c001 (patch)
tree93e5f22e678d9d417f89d8fe0d9b4d15a699a298 /worktree_test.go
parent15aedd2ff43c25e0d54d6b488114725a266c79d0 (diff)
downloadgo-git-81d429bc0f13d05770fa5a824202e07f6f80c001.tar.gz
Fix relative submodule resolution
With the current behavior, the config will always hold the resolved, absolute URL, leavin the user of go-git no choice to determine whether the original URL is relative or not. This changes to employ relative URL resolution only when resolving a submodule to a repository to keep the correct configuration 'unresolved' and intact. Change relative resolution using `filepath.Dir` to `path.Join` while parsing both the 'root' and the relative URL with `net/url.URL`. Adapt test to verify the new behavior. Re-fixes #184 (see comments).
Diffstat (limited to 'worktree_test.go')
-rw-r--r--worktree_test.go23
1 files changed, 19 insertions, 4 deletions
diff --git a/worktree_test.go b/worktree_test.go
index 93a4a9a..8a7586a 100644
--- a/worktree_test.go
+++ b/worktree_test.go
@@ -520,7 +520,6 @@ func (s *WorktreeSuite) TestCheckoutSubmoduleInitialized(c *C) {
c.Assert(status.IsClean(), Equals, true)
}
-
func (s *WorktreeSuite) TestCheckoutRelativePathSubmoduleInitialized(c *C) {
url := "https://github.com/git-fixtures/submodule.git"
r := s.NewRepository(fixtures.ByURL(url).One())
@@ -547,13 +546,29 @@ func (s *WorktreeSuite) TestCheckoutRelativePathSubmoduleInitialized(c *C) {
// test submodule path
modules, err := w.readGitmodulesFile()
- c.Assert(modules.Submodules["basic"].URL, Equals, "git@github.com:git-fixtures/basic.git")
- c.Assert(modules.Submodules["itself"].URL, Equals, "git@github.com:git-fixtures/submodule.git")
+ c.Assert(modules.Submodules["basic"].URL, Equals, "../basic.git")
+ c.Assert(modules.Submodules["itself"].URL, Equals, "../submodule.git")
+
+ basicSubmodule, err := w.Submodule("basic")
+ c.Assert(err, IsNil)
+ basicRepo, err := basicSubmodule.Repository()
+ c.Assert(err, IsNil)
+ basicRemotes, err := basicRepo.Remotes()
+ c.Assert(err, IsNil)
+ c.Assert(basicRemotes[0].Config().URLs[0], Equals, "https://github.com/git-fixtures/basic.git")
+
+ itselfSubmodule, err := w.Submodule("itself")
+ c.Assert(err, IsNil)
+ itselfRepo, err := itselfSubmodule.Repository()
+ c.Assert(err, IsNil)
+ itselfRemotes, err := itselfRepo.Remotes()
+ c.Assert(err, IsNil)
+ c.Assert(itselfRemotes[0].Config().URLs[0], Equals, "https://github.com/git-fixtures/submodule.git")
sub, err := w.Submodules()
c.Assert(err, IsNil)
- err = sub.Update(&SubmoduleUpdateOptions{Init: true, RecurseSubmodules:DefaultSubmoduleRecursionDepth})
+ err = sub.Update(&SubmoduleUpdateOptions{Init: true, RecurseSubmodules: DefaultSubmoduleRecursionDepth})
c.Assert(err, IsNil)
status, err := w.Status()