func fetchCommand(cmd *cobra.Command, args []string) { var refs []string if len(args) > 0 { // Remote is first arg lfs.Config.CurrentRemote = args[0] } else { trackedRemote, err := git.CurrentRemote() if err == nil { lfs.Config.CurrentRemote = trackedRemote } // otherwise leave as default (origin) } if len(args) > 1 { refs = args[1:] } else { ref, err := git.CurrentRef() if err != nil { Panic(err, "Could not fetch") } refs = []string{ref} } includePaths, excludePaths := determineIncludeExcludePaths(fetchIncludeArg, fetchExcludeArg) // Fetch refs sequentially per arg order; duplicates in later refs will be ignored for _, ref := range refs { fetchRef(ref, includePaths, excludePaths) } }
func fetchCommand(cmd *cobra.Command, args []string) { requireInRepo() var refs []*git.Ref if len(args) > 0 { // Remote is first arg lfs.Config.CurrentRemote = args[0] } else { trackedRemote, err := git.CurrentRemote() if err == nil { lfs.Config.CurrentRemote = trackedRemote } // otherwise leave as default (origin) } if len(args) > 1 { for _, r := range args[1:] { ref, err := git.ResolveRef(r) if err != nil { Panic(err, "Invalid ref argument") } refs = append(refs, ref) } } else { ref, err := git.CurrentRef() if err != nil { Panic(err, "Could not fetch") } refs = []*git.Ref{ref} } if fetchAllArg { if fetchRecentArg || len(args) > 1 { Exit("Cannot combine --all with ref arguments or --recent") } if fetchIncludeArg != "" || fetchExcludeArg != "" { Exit("Cannot combine --all with --include or --exclude") } if len(lfs.Config.FetchIncludePaths()) > 0 || len(lfs.Config.FetchExcludePaths()) > 0 { Print("Ignoring global include / exclude paths to fulfil --all") } fetchAll() } else { // !all includePaths, excludePaths := determineIncludeExcludePaths(fetchIncludeArg, fetchExcludeArg) // Fetch refs sequentially per arg order; duplicates in later refs will be ignored for _, ref := range refs { Print("Fetching %v", ref.Name) fetchRef(ref.Sha, includePaths, excludePaths) } if fetchRecentArg || lfs.Config.FetchPruneConfig().FetchRecentAlways { fetchRecent(refs, includePaths, excludePaths) } } }
func fetchCommand(cmd *cobra.Command, args []string) { var refs []*git.Ref if len(args) > 0 { // Remote is first arg lfs.Config.CurrentRemote = args[0] } else { trackedRemote, err := git.CurrentRemote() if err == nil { lfs.Config.CurrentRemote = trackedRemote } // otherwise leave as default (origin) } if len(args) > 1 { for _, r := range args[1:] { ref, err := git.ResolveRef(r) if err != nil { Panic(err, "Invalid ref argument") } refs = append(refs, ref) } } else { ref, err := git.CurrentRef() if err != nil { Panic(err, "Could not fetch") } refs = []*git.Ref{ref} } includePaths, excludePaths := determineIncludeExcludePaths(fetchIncludeArg, fetchExcludeArg) // Fetch refs sequentially per arg order; duplicates in later refs will be ignored for _, ref := range refs { Print("Fetching %v", ref.Name) fetchRef(ref.Sha, includePaths, excludePaths) } if fetchRecentArg || lfs.Config.FetchPruneConfig().FetchRecentAlways { fetchRecent(refs, includePaths, excludePaths) } }
func pullCommand(cmd *cobra.Command, args []string) { if len(args) > 0 { // Remote is first arg lfs.Config.CurrentRemote = args[0] } else { trackedRemote, err := git.CurrentRemote() if err == nil { lfs.Config.CurrentRemote = trackedRemote } // otherwise leave as default (origin) } ref, err := git.CurrentRef() if err != nil { Panic(err, "Could not pull") } includePaths, excludePaths := determineIncludeExcludePaths(pullIncludeArg, pullExcludeArg) c := fetchRefToChan(ref, includePaths, excludePaths) checkoutFromFetchChan(includePaths, excludePaths, c) }
func statusCommand(cmd *cobra.Command, args []string) { ref, err := git.CurrentRef() if err != nil { Panic(err, "Could not get the current ref") } stagedPointers, err := lfs.ScanIndex() if err != nil { Panic(err, "Could not scan staging for Git LFS objects") } if porcelain { for _, p := range stagedPointers { switch p.Status { case "R", "C": Print("%s %s -> %s %d", p.Status, p.SrcName, p.Name, p.Size) case "M": Print(" %s %s %d", p.Status, p.Name, p.Size) default: Print("%s %s %d", p.Status, p.Name, p.Size) } } return } branch, err := git.CurrentBranch() if err != nil { Panic(err, "Could not get current branch") } Print("On branch %s", branch) remoteRef, err := git.CurrentRemoteRef() if err == nil { pointers, err := lfs.ScanRefs(ref.Sha, "^"+remoteRef.Sha, nil) if err != nil { Panic(err, "Could not scan for Git LFS objects") } remote, err := git.CurrentRemote() if err != nil { Panic(err, "Could not get current remote branch") } Print("Git LFS objects to be pushed to %s:\n", remote) for _, p := range pointers { Print("\t%s (%s)", p.Name, humanizeBytes(p.Size)) } } Print("\nGit LFS objects to be committed:\n") for _, p := range stagedPointers { switch p.Status { case "R", "C": Print("\t%s -> %s (%s)", p.SrcName, p.Name, humanizeBytes(p.Size)) case "M": default: Print("\t%s (%s)", p.Name, humanizeBytes(p.Size)) } } Print("\nGit LFS objects not staged for commit:\n") for _, p := range stagedPointers { if p.Status == "M" { Print("\t%s", p.Name) } } Print("") }