提交 3ee7aeec 编写于 作者: J Jingwen Owen Ou

Add git.Checkout

上级 f0379f80
package commands
import (
"github.com/jingweno/gh/git"
"github.com/jingweno/gh/utils"
)
var cmdCheckout = &Command{
Run: checkout,
GitExtension: true,
......@@ -7,5 +12,22 @@ var cmdCheckout = &Command{
Short: "Switch the active branch to another branch",
}
/**
$ gh checkout https://github.com/jingweno/gh/pull/73
# > git remote add -f -t feature git://github:com/foo/gh.git
# > git checkout --track -B foo-feature foo/feature
$ gh checkout https://github.com/jingweno/gh/pull/73 custom-branch-name
**/
func checkout(command *Command, args []string) {
if len(args) > 0 {
args = transformCheckoutArgs(args)
}
err := git.ExecCheckout(args)
utils.Check(err)
}
func transformCheckoutArgs(args []string) []string {
return nil
}
......@@ -20,7 +20,7 @@ type Command struct {
func (c *Command) PrintUsage() {
if c.GitExtension {
err := git.Help(c.Name())
err := git.ExecHelp(c.Name())
utils.Check(err)
} else {
if c.Runnable() {
......
......@@ -29,7 +29,7 @@ func remote(command *Command, args []string) {
args = transformRemoteArgs(args)
}
err := git.ExecRemote(args)
err := git.ExecRemote(args...)
utils.Check(err)
}
......
......@@ -109,14 +109,12 @@ func Remote() (string, error) {
return "", errors.New("Can't find git remote (push)")
}
func ExecRemote(args []string) error {
cmd := cmd.New("git")
cmd.WithArg("remote")
for _, i := range args {
cmd.WithArg(i)
}
func ExecRemote(args ...string) error {
cmdArgs := make([]string, 0)
cmdArgs = append(cmdArgs, "checkout")
cmdArgs = append(cmdArgs, args...)
return cmd.SysExec()
return sysExec(cmdArgs...)
}
func AddRemote(name, url string) error {
......@@ -125,12 +123,16 @@ func AddRemote(name, url string) error {
return err
}
func Help(command string) error {
cmd := cmd.New("git")
cmd.WithArg(command)
cmd.WithArg("--help")
func ExecCheckout(args []string) error {
cmdArgs := make([]string, 0)
cmdArgs = append(cmdArgs, "checkout")
cmdArgs = append(cmdArgs, args...)
return cmd.SysExec()
return sysExec(cmdArgs...)
}
func ExecHelp(command string) error {
return sysExec("help", command, "--help")
}
func Log(sha1, sha2 string) (string, error) {
......@@ -149,6 +151,15 @@ func Log(sha1, sha2 string) (string, error) {
return outputs, nil
}
func sysExec(args ...string) error {
cmd := cmd.New("git")
for _, a := range args {
cmd.WithArg(a)
}
return cmd.SysExec()
}
func execGitCmd(input []string) (outputs []string, err error) {
cmd := cmd.New("git")
for _, i := range input {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册