diff options
| -rw-r--r-- | internal/rtree/main.go | 10 | ||||
| -rw-r--r-- | internal/rtree/repo.go | 15 |
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 +} |
