summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/rtree/main.go10
-rw-r--r--internal/rtree/repo.go15
2 files changed, 25 insertions, 0 deletions
diff --git a/internal/rtree/main.go b/internal/rtree/main.go
index de92ead..f401ced 100644
--- a/internal/rtree/main.go
+++ b/internal/rtree/main.go
@@ -125,10 +125,20 @@ func commandDrop(index *Index, url string) error {
}
func commandIndex(index *Index) error {
+ //rebuild index (may delete index entries or restore repos from index entries)
err := index.Rebuild()
if err != nil {
return err
}
+
+ //shorten all actually-installed remote URLs into their compact forms
+ for _, repo := range index.Repos {
+ err := repo.ReformatRemoteURLs()
+ if err != nil {
+ return err
+ }
+ }
+
return index.Write()
}
diff --git a/internal/rtree/repo.go b/internal/rtree/repo.go
index 8529bfa..59f3811 100644
--- a/internal/rtree/repo.go
+++ b/internal/rtree/repo.go
@@ -223,3 +223,18 @@ func (r *Repo) Move(checkoutPath string, makeSymlink bool) error {
}
return nil
}
+
+//ReformatRemoteURLs rewrites the remote URLs in this repo's .git/config into
+//their compact forms.
+func (r Repo) ReformatRemoteURLs() error {
+ for _, remote := range r.Remotes {
+ err := cli.Interface.Run(cli.Command{
+ Program: []string{"git", "remote", "set-url", remote.Name, remote.URL.CompactURL()},
+ WorkDir: r.AbsolutePath(),
+ })
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}