git-lfs/lfs/gitscanner.go

49 lines
1.1 KiB
Go
Raw Normal View History

2016-11-16 19:56:07 +00:00
package lfs
type GitScanner struct {
remote string
2016-11-16 19:56:07 +00:00
}
func NewGitScanner() *GitScanner {
return &GitScanner{}
}
func (s *GitScanner) Remote(r string) {
s.remote = r
}
func (s *GitScanner) ScanLeftToRemote(left string) (*PointerChannelWrapper, error) {
2016-11-16 20:51:36 +00:00
return scanRefsToChan(left, "", s.opts(ScanLeftToRemoteMode))
}
func (s *GitScanner) ScanRefRange(left, right string) (*PointerChannelWrapper, error) {
opts := s.opts(ScanRefsMode)
opts.SkipDeletedBlobs = false
2016-11-16 20:51:36 +00:00
return scanRefsToChan(left, right, opts)
}
func (s *GitScanner) ScanRefWithDeleted(ref string) (*PointerChannelWrapper, error) {
return s.ScanRefRange(ref, "")
}
2016-11-16 20:02:45 +00:00
func (s *GitScanner) ScanRef(ref string) (*PointerChannelWrapper, error) {
opts := s.opts(ScanRefsMode)
2016-11-16 20:02:45 +00:00
opts.SkipDeletedBlobs = true
2016-11-16 20:51:36 +00:00
return scanRefsToChan(ref, "", opts)
2016-11-16 20:02:45 +00:00
}
func (s *GitScanner) ScanAll() (*PointerChannelWrapper, error) {
opts := s.opts(ScanAllMode)
2016-11-16 19:56:07 +00:00
opts.SkipDeletedBlobs = false
2016-11-16 20:51:36 +00:00
return scanRefsToChan("", "", opts)
2016-11-16 19:56:07 +00:00
}
func (s *GitScanner) opts(mode ScanningMode) *ScanRefsOptions {
2016-11-16 20:53:56 +00:00
opts := newScanRefsOptions()
opts.ScanMode = mode
if len(s.remote) > 0 {
opts.RemoteName = s.remote
}
return opts
}