From 3967812bd0de40330dfbb9e1a7d14d4073cc1b10 Mon Sep 17 00:00:00 2001 From: Máximo Cuadros Date: Mon, 12 Dec 2016 15:50:03 +0100 Subject: examples: review, testing and documentation (#176) * examples reviews, testing and documentation * including the execution on travis, and fix readme * fix example link * including the execution on travis --- examples/custom_http/main.go | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 examples/custom_http/main.go (limited to 'examples/custom_http/main.go') diff --git a/examples/custom_http/main.go b/examples/custom_http/main.go new file mode 100644 index 0000000..0853569 --- /dev/null +++ b/examples/custom_http/main.go @@ -0,0 +1,55 @@ +package main + +import ( + "crypto/tls" + "fmt" + "net/http" + "os" + "time" + + "gopkg.in/src-d/go-git.v4" + . "gopkg.in/src-d/go-git.v4/examples" + "gopkg.in/src-d/go-git.v4/plumbing/transport/client" + githttp "gopkg.in/src-d/go-git.v4/plumbing/transport/http" +) + +// Here is an example to configure http client according to our own needs. +func main() { + CheckArgs("") + url := os.Args[1] + + // Create a custom http(s) client with your config + customClient := &http.Client{ + // accept any certificate (might be useful for testing) + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + + // 15 second timeout + Timeout: 15 * time.Second, + + // don't follow redirect + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + + // Override http(s) default protocol to use our custom client + client.InstallProtocol("https", githttp.NewClient(customClient)) + + // Create an in-memory repository + r := git.NewMemoryRepository() + + // Clone repository using the new client if the protocol is https:// + Info("git clone %s", url) + + err := r.Clone(&git.CloneOptions{URL: url}) + CheckIfError(err) + + // Retrieve the branch pointed by HEAD + Info("git rev-parse HEAD") + + head, err := r.Head() + CheckIfError(err) + fmt.Println(head.Hash()) +} -- cgit