Use Different Remote Repos (#58)
This commit is contained in:
parent
cd1ddb86b5
commit
0515114fa3
|
@ -1 +1,2 @@
|
||||||
tea
|
tea
|
||||||
|
.idea/
|
||||||
|
|
|
@ -195,9 +195,31 @@ func curGitRepoPath() (*Login, string, error) {
|
||||||
if err := gitConfig.Unmarshal(bs); err != nil {
|
if err := gitConfig.Unmarshal(bs); err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
remoteConfig, ok := gitConfig.Remotes["origin"]
|
|
||||||
|
// if no remote
|
||||||
|
if len(gitConfig.Remotes) == 0 {
|
||||||
|
return nil, "", errors.New("No remote repository set on this git repository")
|
||||||
|
}
|
||||||
|
|
||||||
|
// if only one remote exists
|
||||||
|
if len(gitConfig.Remotes) >= 1 && len(remoteValue) == 0 {
|
||||||
|
for remote := range gitConfig.Remotes {
|
||||||
|
remoteValue = remote
|
||||||
|
}
|
||||||
|
if len(gitConfig.Remotes) > 1 {
|
||||||
|
// if master branch is present, use it as the default remote
|
||||||
|
masterBranch, ok := gitConfig.Branches["master"]
|
||||||
|
if ok {
|
||||||
|
if len(masterBranch.Remote) > 0 {
|
||||||
|
remoteValue = masterBranch.Remote
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
remoteConfig, ok := gitConfig.Remotes[remoteValue]
|
||||||
if !ok || remoteConfig == nil {
|
if !ok || remoteConfig == nil {
|
||||||
return nil, "", errors.New("No remote origin found on this git repository")
|
return nil, "", errors.New("No remote " + remoteValue + " found on this git repository")
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, l := range config.Logins {
|
for _, l := range config.Logins {
|
||||||
|
|
|
@ -16,6 +16,7 @@ var (
|
||||||
loginValue string
|
loginValue string
|
||||||
repoValue string
|
repoValue string
|
||||||
outputValue string
|
outputValue string
|
||||||
|
remoteValue string
|
||||||
)
|
)
|
||||||
|
|
||||||
// LoginFlag provides flag to specify tea login profile
|
// LoginFlag provides flag to specify tea login profile
|
||||||
|
@ -32,6 +33,13 @@ var RepoFlag = cli.StringFlag{
|
||||||
Destination: &repoValue,
|
Destination: &repoValue,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoteFlag provides flag to specify remote repository
|
||||||
|
var RemoteFlag = cli.StringFlag{
|
||||||
|
Name: "remote, R",
|
||||||
|
Usage: "Set a specific remote repository, is optional if not set use git default one",
|
||||||
|
Destination: &remoteValue,
|
||||||
|
}
|
||||||
|
|
||||||
// OutputFlag provides flag to specify output type
|
// OutputFlag provides flag to specify output type
|
||||||
var OutputFlag = cli.StringFlag{
|
var OutputFlag = cli.StringFlag{
|
||||||
Name: "output, o",
|
Name: "output, o",
|
||||||
|
@ -63,6 +71,7 @@ var LoginRepoFlags = []cli.Flag{
|
||||||
// https://github.com/urfave/cli/issues/585
|
// https://github.com/urfave/cli/issues/585
|
||||||
var AllDefaultFlags = append([]cli.Flag{
|
var AllDefaultFlags = append([]cli.Flag{
|
||||||
RepoFlag,
|
RepoFlag,
|
||||||
|
RemoteFlag,
|
||||||
}, LoginOutputFlags...)
|
}, LoginOutputFlags...)
|
||||||
|
|
||||||
// initCommand returns repository and *Login based on flags
|
// initCommand returns repository and *Login based on flags
|
||||||
|
|
Loading…
Reference in New Issue