aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2019-07-26 18:59:37 +0200
committerGitHub <noreply@github.com>2019-07-26 18:59:37 +0200
commit1edb992dbc419a0767b1cf3a524b0d35529799f5 (patch)
treefe994302589318133ec34e74bfe8c8f302a5147d /config
parent4a6d836e2fa35fd05d2bfeeaecbb546c2e10ece1 (diff)
parent17ea92a0703c21b744560e6586ee61431dba9ffb (diff)
downloadgo-git-1edb992dbc419a0767b1cf3a524b0d35529799f5.tar.gz
Merge pull request #1165 from seletskiy/push-prune
Remote: add Prune option to PushOptions
Diffstat (limited to 'config')
-rw-r--r--config/refspec.go7
-rw-r--r--config/refspec_test.go9
2 files changed, 16 insertions, 0 deletions
diff --git a/config/refspec.go b/config/refspec.go
index d32a2e4..14bb400 100644
--- a/config/refspec.go
+++ b/config/refspec.go
@@ -127,6 +127,13 @@ func (s RefSpec) Dst(n plumbing.ReferenceName) plumbing.ReferenceName {
return plumbing.ReferenceName(dst[0:wd] + match + dst[wd+1:])
}
+func (s RefSpec) Reverse() RefSpec {
+ spec := string(s)
+ separator := strings.Index(spec, refSpecSeparator)
+
+ return RefSpec(spec[separator+1:] + refSpecSeparator + spec[:separator])
+}
+
func (s RefSpec) String() string {
return string(s)
}
diff --git a/config/refspec_test.go b/config/refspec_test.go
index 2d2b057..aaeac73 100644
--- a/config/refspec_test.go
+++ b/config/refspec_test.go
@@ -167,6 +167,15 @@ func (s *RefSpecSuite) TestRefSpecDstBlob(c *C) {
)
}
}
+
+func (s *RefSpecSuite) TestRefSpecReverse(c *C) {
+ spec := RefSpec("refs/heads/*:refs/remotes/origin/*")
+ c.Assert(
+ spec.Reverse(), Equals,
+ RefSpec("refs/remotes/origin/*:refs/heads/*"),
+ )
+}
+
func (s *RefSpecSuite) TestMatchAny(c *C) {
specs := []RefSpec{
"refs/heads/bar:refs/remotes/origin/foo",