func (s *shard) CommitGet(name string) (Commit, error) { commitPath := path.Join(s.dataRepo, name) isCommit, err := btrfs.IsCommit(commitPath) if err != nil { return Commit{}, err } if !isCommit { return Commit{}, ErrInvalidObject } info, err := btrfs.Stat(commitPath) if err != nil { return Commit{}, err } return Commit{name, info.ModTime()}, nil }
func (s *shard) BranchGet(name string) (Branch, error) { branchPath := path.Join(s.dataRepo, name) isCommit, err := btrfs.IsCommit(branchPath) if err != nil { return Branch{}, err } if isCommit { return Branch{}, ErrInvalidObject } info, err := btrfs.Stat(branchPath) if err != nil { return Branch{}, err } return Branch{name, info.ModTime()}, nil }
func (s *shard) BranchList() ([]Branch, error) { var result []Branch if err := btrfs.Commits(s.dataRepo, "", btrfs.Desc, func(name string) error { isCommit, err := btrfs.IsCommit(path.Join(s.dataRepo, name)) if err != nil { return err } if !isCommit { fi, err := btrfs.Stat(path.Join(s.dataRepo, name)) if err != nil { return err } result = append(result, Branch{name, fi.ModTime()}) } return nil }); err != nil { return nil, err } return result, nil }