Beispiel #1
0
func main() {
	flag.Parse()

	if *g_help {
		git_svn_usage()
		os.Exit(1)
	}

	ctx := svn.NewContextFrom(
		g_url,
		*g_verbose,
		*g_metadata,
		*g_no_minimize_url,
		*g_root_is_trunk,
		*g_rebase,
		*g_username,
		*g_trunk,
		*g_branches,
		*g_tags,
		*g_exclude,
		*g_revision,
		*g_no_trunk,
		*g_no_branches,
		*g_no_tags,
		*g_authors,
	)

	if ctx.RootIsTrunk {
		ctx.Trunk = ""
		ctx.Branches = ""
		ctx.Tags = ""
	}

	if ctx.NoTrunk {
		ctx.Trunk = ""
	}

	if ctx.NoBranches {
		ctx.Branches = ""
	}

	if ctx.NoTags {
		ctx.Tags = ""
	}

	if ctx.Verbose {
		fmt.Printf("==go-svn2git...\n")
		fmt.Printf(" verbose:  %v\n", ctx.Verbose)
		fmt.Printf(" rebase:   %v\n", ctx.Rebase)
		fmt.Printf(" username: %q\n", ctx.UserName)
		fmt.Printf(" trunk:    %q\n", ctx.Trunk)
		fmt.Printf(" branches: %q\n", ctx.Branches)
		fmt.Printf(" tags:     %q\n", ctx.Tags)
		fmt.Printf(" authors:  %q\n", ctx.Authors)
		fmt.Printf(" root-is-trunk: %v\n", ctx.RootIsTrunk)
		fmt.Printf(" exclude:  %q\n", ctx.Exclude)
	}

	if ctx.Rebase {
		if flag.NArg() > 0 {
			fmt.Printf("** too many arguments\n")
			fmt.Printf("** \"%s -rebase\" takes no argument\n", os.Args[0])
			//git_svn_usage()
			err := verify_working_tree_is_clean()
			if err != nil {
				os.Exit(1)
			}
		}
	} else {
		ok := true
		switch flag.NArg() {
		case 0:
			fmt.Printf("** missing SVN_URL parameter\n")
			ok = false
		case 1:
			/*noop*/
		default:
			fmt.Printf("** too many arguments: %v\n", flag.Args())
			fmt.Printf("** did you pass an option *after* the url ?\n")
			ok = false
		}
		if !ok {
			fmt.Printf("** run \"%s -help\" for help\n", os.Args[0])
			os.Exit(1)
		}
		ctx.Url = flag.Arg(0)
	}

	err := ctx.Run()
	if err != nil {
		fmt.Printf("**error** %v\n", err)
		os.Exit(1)
	}
}
func hwaf_run_cmd_git_svn_clone(cmd *commander.Command, args []string) {
	var err error
	n := "hwaf-" + cmd.Name()

	ctx := svn.NewContextFrom(
		"no-url",
		cmd.Flag.Lookup("verbose").Value.Get().(bool),
		cmd.Flag.Lookup("metadata").Value.Get().(bool),
		cmd.Flag.Lookup("no-minimize-url").Value.Get().(bool),
		cmd.Flag.Lookup("root-is-trunk").Value.Get().(bool),
		cmd.Flag.Lookup("rebase").Value.Get().(bool),
		cmd.Flag.Lookup("username").Value.Get().(string),
		cmd.Flag.Lookup("trunk").Value.Get().(string),
		cmd.Flag.Lookup("branches").Value.Get().(string),
		cmd.Flag.Lookup("tags").Value.Get().(string),
		cmd.Flag.Lookup("exclude").Value.Get().(string),
		cmd.Flag.Lookup("revision").Value.Get().(string),
		cmd.Flag.Lookup("no-trunk").Value.Get().(bool),
		cmd.Flag.Lookup("no-branches").Value.Get().(bool),
		cmd.Flag.Lookup("no-tags").Value.Get().(bool),
		cmd.Flag.Lookup("authors").Value.Get().(string),
	)

	if ctx.RootIsTrunk {
		ctx.Trunk = ""
		ctx.Branches = ""
		ctx.Tags = ""
	}

	if ctx.NoTrunk {
		ctx.Trunk = ""
	}

	if ctx.NoBranches {
		ctx.Branches = ""
	}

	if ctx.NoTags {
		ctx.Tags = ""
	}

	if ctx.Verbose {
		fmt.Printf("==go-svn2git...\n")
		fmt.Printf(" verbose:  %v\n", ctx.Verbose)
		fmt.Printf(" rebase:   %v\n", ctx.Rebase)
		fmt.Printf(" username: %q\n", ctx.UserName)
		fmt.Printf(" trunk:    %q\n", ctx.Trunk)
		fmt.Printf(" branches: %q\n", ctx.Branches)
		fmt.Printf(" tags:     %q\n", ctx.Tags)
		fmt.Printf(" authors:  %q\n", ctx.Authors)
		fmt.Printf(" root-is-trunk: %v\n", ctx.RootIsTrunk)
		fmt.Printf(" exclude:  %q\n", ctx.Exclude)
	}

	if ctx.Rebase {
		if len(args) > 0 {
			fmt.Printf("%s: too many arguments\n", n)
			fmt.Printf("%s: \"-rebase\" takes no argument\n", n)
			//git_svn_usage()
			git := exec.Command("git", "status", "--porcelain", "--untracked-files=no")
			out, err := git.CombinedOutput()
			if len(out) != 0 {
				fmt.Printf("%s: you have pending changes. The working tree must be clean in order to continue.\n", n)
			}
			handle_err(err)
		}
	} else {
		ok := true
		switch len(args) {
		case 0:
			fmt.Printf("%s: missing SVN_URL parameter\n", n)
			ok = false
		case 1:
			/*noop*/
		default:
			fmt.Printf("%s: too many arguments: %v\n", n, args)
			fmt.Printf("%s: did you pass an option *after* the url ?\n", n)
			ok = false
		}
		if !ok {
			fmt.Printf("%s: \"-help\" for help\n", n)
			os.Exit(1)
		}
		ctx.Url = args[0]
	}

	err = ctx.Run()
	handle_err(err)
}