func cloneCommand(cmd *cobra.Command, args []string) { // We pass all args to git clone err := git.CloneWithoutFilters(cloneFlags, args) if err != nil { Exit("Error(s) during clone:\n%v", err) } // now execute pull (need to be inside dir) cwd, err := os.Getwd() if err != nil { Exit("Unable to derive current working dir: %v", err) } // Either the last argument was a relative or local dir, or we have to // derive it from the clone URL clonedir, err := filepath.Abs(args[len(args)-1]) if err != nil || !tools.DirExists(clonedir) { // Derive from clone URL instead base := path.Base(args[len(args)-1]) if strings.HasSuffix(base, ".git") { base = base[:len(base)-4] } clonedir, _ = filepath.Abs(base) if !tools.DirExists(clonedir) { Exit("Unable to find clone dir at %q", clonedir) } } err = os.Chdir(clonedir) if err != nil { Exit("Unable to change directory to clone dir %q: %v", clonedir, err) } // Make sure we pop back to dir we started in at the end defer os.Chdir(cwd) // Also need to derive dirs now localstorage.ResolveDirs() requireInRepo() // Now just call pull with default args // Support --origin option to clone if len(cloneFlags.Origin) > 0 { config.Config.CurrentRemote = cloneFlags.Origin } else { config.Config.CurrentRemote = "origin" } if cloneFlags.NoCheckout || cloneFlags.Bare { // If --no-checkout or --bare then we shouldn't check out, just fetch instead fetchRef("HEAD", nil, nil) } else { pull(nil, nil) } }
// Change to repo dir but save current dir func (r *Repo) Pushd() { if r.popDir != "" { r.callback.Fatalf("Cannot Pushd twice") } oldwd, err := os.Getwd() if err != nil { r.callback.Fatalf("Can't get cwd %v", err) } err = os.Chdir(r.Path) if err != nil { r.callback.Fatalf("Can't chdir %v", err) } r.popDir = oldwd localstorage.ResolveDirs() }
func init() { tracerx.DefaultKey = "GIT" tracerx.Prefix = "trace git-lfs: " localstorage.ResolveDirs() }
// resolveLocalStorage implements the `func(*cobra.Command, []string)` signature // necessary to wire it up via `cobra.Command.PreRun`. When run, this function // will resolve the localstorage directories. func resolveLocalStorage(cmd *cobra.Command, args []string) { localstorage.ResolveDirs() }