Skip to content

Commit

Permalink
Updated README.
Browse files Browse the repository at this point in the history
  • Loading branch information
beefsack committed May 7, 2015
1 parent 6d37986 commit 69eb865
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
38 changes: 36 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,36 @@
# git-mirror
Mirror Git repositories without effort
# git-mirror - simple Git mirrors

`git-mirror` is designed to create and serve read-only mirrors of your Git repositories locally or wherever you choose. A recent GitHub outage reinforces the fact that developers shouldn't be relying on a single remote for hosting code.

A major design goal of `git-mirror` is that it should just work with as little configuration as possible.

## Get started

1. Download and extract the latest release from the [releases page](https://github.com/beefsack/git-mirror/releases).
1. Create `config.toml` similar to:
```toml
[[repo]]
Origin = "https://github.com/beefsack/git-mirror.git"
```
By default it will update the mirror every **15 minutes** and will serve the mirror over HTTP using port **8080**. You can specify as many repos as you want by having multiple `[[repo]]` sections.
1. Run `git-mirror` with the path to the config file:
```bash
$ ./git-mirror config.toml
2015/05/07 11:08:06 starting web server on :8080
2015/05/07 11:08:06 updating github.com/beefsack/git-mirror.git
2015/05/07 11:08:08 updated github.com/beefsack/git-mirror.git
```
1. Now you can clone from your mirror on the default port of `8080`:
```bash
$ git clone http://localhost:8080/github.com/beefsack/git-mirror.git
Cloning into 'git-mirror'...
Checking connectivity... done.
```

## Advanced configuration

See [the example config](example-config.toml) for more advanced configurations.

## Authentication and authorisation

If you wish to control access to the mirror or specific repositories, consider proxying to `git-mirror` using a web server such as Nginx.
4 changes: 4 additions & 0 deletions config.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"path/filepath"
"fmt"
"io/ioutil"
"net/url"
Expand Down Expand Up @@ -54,6 +55,9 @@ func parseConfig(filename string) (cfg config, repos map[string]repo, err error)
if cfg.BasePath == "" {
cfg.BasePath = "."
}
if cfg.BasePath, err = filepath.Abs(cfg.BasePath); err != nil {
err = fmt.Errorf("unable to get absolute path to base path, %s", err)
}

// Fetch repos, injecting default values where needed.
if cfg.Repo == nil || len(cfg.Repo) == 0 {
Expand Down

0 comments on commit 69eb865

Please sign in to comment.