зеркало из https://github.com/mislav/hub.git
Check repository permission for clone URL
This commit is contained in:
Родитель
30f047300c
Коммит
47a9aa9ec6
|
@ -60,8 +60,8 @@
|
|||
},
|
||||
{
|
||||
"ImportPath": "github.com/octokit/go-octokit/octokit",
|
||||
"Comment": "v0.4.0-71-g4fee5e3",
|
||||
"Rev": "4fee5e3019ca20d12c93c1b7f18f20c4a6afff24"
|
||||
"Comment": "v0.4.0-72-ga381371",
|
||||
"Rev": "a38137165e45c66d9b89e2b2b49ad01da497185f"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/ogier/pflag",
|
||||
|
|
10
Godeps/_workspace/src/github.com/octokit/go-octokit/octokit/repositories.go
сгенерированный
поставляемый
10
Godeps/_workspace/src/github.com/octokit/go-octokit/octokit/repositories.go
сгенерированный
поставляемый
|
@ -1,9 +1,10 @@
|
|||
package octokit
|
||||
|
||||
import (
|
||||
"github.com/lostisland/go-sawyer/hypermedia"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/lostisland/go-sawyer/hypermedia"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -68,6 +69,7 @@ type Repository struct {
|
|||
PushedAt time.Time `json:"pushed_at,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at,omitempty"`
|
||||
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
||||
Permissions Permissions `json:"permissions,omitempty"`
|
||||
Organization *Organization `json:"organization,omitempty"`
|
||||
Parent *Repository `json:"parent,omitempty"`
|
||||
Source *Repository `json:"source,omitempty"`
|
||||
|
@ -75,3 +77,9 @@ type Repository struct {
|
|||
HasWiki bool `json:"has_wiki,omitempty"`
|
||||
HasDownloads bool `json:"has_downloads,omitempty"`
|
||||
}
|
||||
|
||||
type Permissions struct {
|
||||
Admin bool
|
||||
Push bool
|
||||
Pull bool
|
||||
}
|
||||
|
|
6
Godeps/_workspace/src/github.com/octokit/go-octokit/octokit/repositories_test.go
сгенерированный
поставляемый
6
Godeps/_workspace/src/github.com/octokit/go-octokit/octokit/repositories_test.go
сгенерированный
поставляемый
|
@ -3,9 +3,10 @@ package octokit
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/bmizerany/assert"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/bmizerany/assert"
|
||||
)
|
||||
|
||||
func TestRepositoresService_One(t *testing.T) {
|
||||
|
@ -34,6 +35,9 @@ func TestRepositoresService_One(t *testing.T) {
|
|||
assert.Equal(t, "git://github.com/jingweno/octokat.git", repo.GitURL)
|
||||
assert.Equal(t, "git@github.com:jingweno/octokat.git", repo.SSHURL)
|
||||
assert.Equal(t, "master", repo.MasterBranch)
|
||||
assert.T(t, !repo.Permissions.Admin)
|
||||
assert.T(t, !repo.Permissions.Push)
|
||||
assert.T(t, repo.Permissions.Pull)
|
||||
}
|
||||
|
||||
func TestRepositoresService_All(t *testing.T) {
|
||||
|
|
|
@ -75,10 +75,14 @@ func transformCloneArgs(args *Args) {
|
|||
}
|
||||
|
||||
project := github.NewProject(owner, name, hostStr)
|
||||
isSSH = isSSH ||
|
||||
if !isSSH &&
|
||||
args.Command != "submodule" &&
|
||||
host != nil &&
|
||||
project.Owner == host.User
|
||||
!args.Noop &&
|
||||
!github.IsHttpsProtocol() {
|
||||
client := github.NewClient(project.Host)
|
||||
repo, err := client.Repository(project)
|
||||
isSSH = (err == nil) && (repo.Private || repo.Permissions.Push)
|
||||
}
|
||||
|
||||
url := project.GitURL(name, owner, isSSH)
|
||||
args.ReplaceParam(i, url)
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package commands
|
||||
|
||||
import (
|
||||
"github.com/bmizerany/assert"
|
||||
"github.com/github/hub/github"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/bmizerany/assert"
|
||||
"github.com/github/hub/github"
|
||||
)
|
||||
|
||||
func TestTransformCloneArgs(t *testing.T) {
|
||||
|
@ -39,7 +40,7 @@ func TestTransformCloneArgs(t *testing.T) {
|
|||
transformCloneArgs(args)
|
||||
|
||||
assert.Equal(t, 1, args.ParamsSize())
|
||||
assert.Equal(t, "git@github.com:jingweno/jekyll_and_hyde.git", args.FirstParam())
|
||||
assert.Equal(t, "git://github.com/jingweno/jekyll_and_hyde.git", args.FirstParam())
|
||||
|
||||
args = NewArgs([]string{"clone", "-p", "jekyll_and_hyde"})
|
||||
transformCloneArgs(args)
|
||||
|
|
|
@ -4,8 +4,23 @@ package github
|
|||
|
||||
import (
|
||||
"code.google.com/p/go.crypto/ssh/terminal"
|
||||
"github.com/github/hub/git"
|
||||
)
|
||||
|
||||
func IsHttpsProtocol() bool {
|
||||
httpProcotol, _ := git.Config("hub.protocol")
|
||||
if httpProcotol == "https" {
|
||||
return true
|
||||
}
|
||||
|
||||
httpClone, _ := git.Config("--bool hub.http-clone")
|
||||
if httpClone == "true" {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func isTerminal(fd uintptr) bool {
|
||||
return terminal.IsTerminal(int(fd))
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче