Documentation ¶
Index ¶
- Constants
- Variables
- func IsGitRepo(path string) (bool, error)
- func IsSivaFile(file string) bool
- func NewChainableRowIter(iter ChainableIter) sql.RowIter
- func NewCommitsByHashIter(repo *Repository, hashes []plumbing.Hash) (object.CommitIter, error)
- func NewDatabase(name string, pool *RepositoryPool) sql.Database
- func NewSchemaMapperIter(iter sql.RowIter, mappings []int) sql.RowIter
- func NewSessionBuilder(pool *RepositoryPool, opts ...SessionOption) server.SessionBuilder
- func PatternMatches(pattern string) ([]string, error)
- type BblfshClient
- func (c *BblfshClient) IsLanguageSupported(ctx context.Context, lang string) (bool, error)
- func (c *BblfshClient) Parse(ctx context.Context, lang string, content []byte) (bblfsh.Node, string, error)
- func (c *BblfshClient) ParseWithMode(ctx context.Context, mode bblfsh.Mode, lang string, content []byte) (bblfsh.Node, string, error)
- func (c *BblfshClient) SupportedLanguages(ctx context.Context) ([]string, error)
- type BlobsIter
- func NewAllCommitBlobsIter(filters sql.Expression) BlobsIter
- func NewCommitBlobBlobsIter(commitBlobs BlobsIter, filters sql.Expression, readContent bool) BlobsIter
- func NewCommitBlobsIter(commits CommitsIter, filters sql.Expression) BlobsIter
- func NewIndexCommitBlobsIter(index sql.IndexLookup, filters sql.Expression) BlobsIter
- func NewRepoBlobsIter(repos ReposIter, filters sql.Expression, readContent bool) BlobsIter
- func NewTreeEntryBlobsIter(squashTreeEntriesIter TreeEntriesIter, filters sql.Expression, ...) BlobsIter
- type ChainableIter
- type CommitFile
- type CommitsIter
- func NewAllCommitsIter(filters sql.Expression, virtual bool) CommitsIter
- func NewAllRefCommitsIter(filters sql.Expression) CommitsIter
- func NewIndexCommitsIter(index sql.IndexLookup, filters sql.Expression) CommitsIter
- func NewRefCommitCommitsIter(refCommits CommitsIter, filters sql.Expression) CommitsIter
- func NewRefHEADCommitsIter(refsIter RefsIter, filters sql.Expression, virtual bool) CommitsIter
- func NewRefHeadRefCommitsIter(refs RefsIter, filters sql.Expression) CommitsIter
- func NewRefRefCommitsIter(refsIter RefsIter, filters sql.Expression) CommitsIter
- func NewRepoCommitsIter(repos ReposIter, filters sql.Expression) CommitsIter
- type Database
- type FilesIter
- type Indexable
- type Ref
- type RefCommitsIter
- type RefsIter
- func NewAllRefsIter(filters sql.Expression, virtual bool) RefsIter
- func NewIndexRefsIter(filters sql.Expression, index sql.IndexLookup) RefsIter
- func NewRemoteRefsIter(remotesIter RemotesIter, filters sql.Expression) RefsIter
- func NewRepoRefsIter(squashReposIter ReposIter, filters sql.Expression, virtual bool) RefsIter
- type Remote
- type RemotesIter
- type ReposIter
- type Repository
- type RepositoryIter
- type RepositoryPartition
- type RepositoryPool
- func (p *RepositoryPool) Add(repo repository) error
- func (p *RepositoryPool) AddGit(path string) error
- func (p *RepositoryPool) AddGitWithID(id, path string) error
- func (p *RepositoryPool) AddSivaFile(path string) error
- func (p *RepositoryPool) AddSivaFileWithID(id, path string) error
- func (p *RepositoryPool) GetPos(pos int) (*Repository, error)
- func (p *RepositoryPool) GetRepo(id string) (*Repository, error)
- func (p *RepositoryPool) RepoIter() (*RepositoryIter, error)
- type Session
- type SessionOption
- type Squashable
- type SquashedTable
- func (t *SquashedTable) Name() string
- func (SquashedTable) PartitionCount(ctx *sql.Context) (int64, error)
- func (t *SquashedTable) PartitionRows(ctx *sql.Context, p sql.Partition) (sql.RowIter, error)
- func (SquashedTable) Partitions(ctx *sql.Context) (sql.PartitionIter, error)
- func (t *SquashedTable) Schema() sql.Schema
- func (t *SquashedTable) String() string
- type Table
- type TreeEntriesIter
- func NewAllTreeEntriesIter(filters sql.Expression) TreeEntriesIter
- func NewIndexTreeEntriesIter(index sql.IndexLookup, filters sql.Expression) TreeEntriesIter
- func NewRepoTreeEntriesIter(repos ReposIter, filters sql.Expression) TreeEntriesIter
- func NewTreeTreeEntriesIter(trees TreesIter, filters sql.Expression, virtual bool) TreeEntriesIter
- type TreeEntry
- type TreesIter
- func NewAllCommitTreesIter(filters sql.Expression) TreesIter
- func NewCommitMainTreeIter(commits CommitsIter, filters sql.Expression, virtual bool) TreesIter
- func NewCommitTreesIter(commits CommitsIter, filters sql.Expression, virtual bool) TreesIter
- func NewIndexCommitTreesIter(index sql.IndexLookup, filters sql.Expression) TreesIter
Constants ¶
const ( // ReferencesTableName is the name of the refs table. ReferencesTableName = "refs" // CommitsTableName is the name of the commits table. CommitsTableName = "commits" // BlobsTableName is the name of the blobs table. BlobsTableName = "blobs" // TreeEntriesTableName is the name of the tree entries table. TreeEntriesTableName = "tree_entries" // RepositoriesTableName is the name of the repositories table. RepositoriesTableName = "repositories" // RemotesTableName is the name of the remotes table. RemotesTableName = "remotes" // RefCommitsTableName is the name of the ref commits table. RefCommitsTableName = "ref_commits" // CommitTreesTableName is the name of the commit trees table. CommitTreesTableName = "commit_trees" // CommitBlobsTableName is the name of the commit blobs table. CommitBlobsTableName = "commit_blobs" // CommitFilesTableName is the name of the commit files table. CommitFilesTableName = "commit_files" // FilesTableName is the name of the files table. FilesTableName = "files" )
Variables ¶
var ( // ErrColumnNotFound is returned when a given column is not found in the table's schema. ErrColumnNotFound = errors.NewKind("column %s not found for table %s") // ErrInvalidObjectType is returned when the received object is not of the correct type. ErrInvalidObjectType = errors.NewKind("got object of type %T, expecting %s") )
var BlobsSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Nullable: false, Source: BlobsTableName}, {Name: "blob_hash", Type: sql.Text, Nullable: false, Source: BlobsTableName}, {Name: "blob_size", Type: sql.Int64, Nullable: false, Source: BlobsTableName}, {Name: "blob_content", Type: sql.Blob, Nullable: false, Source: BlobsTableName}, }
BlobsSchema is the schema for the blobs table.
var CommitBlobsSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Source: CommitBlobsTableName}, {Name: "commit_hash", Type: sql.Text, Source: CommitBlobsTableName}, {Name: "blob_hash", Type: sql.Text, Source: CommitBlobsTableName}, }
CommitBlobsSchema is the schema for the commit blobs table.
var CommitFilesSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Source: CommitFilesTableName}, {Name: "commit_hash", Type: sql.Text, Source: CommitFilesTableName}, {Name: "file_path", Type: sql.Text, Source: CommitFilesTableName}, {Name: "blob_hash", Type: sql.Text, Source: CommitFilesTableName}, {Name: "tree_hash", Type: sql.Text, Source: CommitFilesTableName}, }
CommitFilesSchema is the schema for the commit trees table.
var CommitTreesSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Source: CommitTreesTableName}, {Name: "commit_hash", Type: sql.Text, Source: CommitTreesTableName}, {Name: "tree_hash", Type: sql.Text, Source: CommitTreesTableName}, }
CommitTreesSchema is the schema for the commit trees table.
var CommitsSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "commit_hash", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "commit_author_name", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "commit_author_email", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "commit_author_when", Type: sql.Timestamp, Nullable: false, Source: CommitsTableName}, {Name: "committer_name", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "committer_email", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "committer_when", Type: sql.Timestamp, Nullable: false, Source: CommitsTableName}, {Name: "commit_message", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "tree_hash", Type: sql.Text, Nullable: false, Source: CommitsTableName}, {Name: "commit_parents", Type: sql.Array(sql.Text), Nullable: false, Source: CommitsTableName}, }
CommitsSchema is the schema for the commits table.
var ErrBblfshConnection = errors.NewKind("unable to establish a connection with the bblfsh server: %s")
ErrBblfshConnection is returned when it's impossible to connect to bblfsh.
var ErrInvalidContext = errors.NewKind("invalid context received: %v")
ErrInvalidContext is returned when some node expected an sql.Context with gitbase session but received something else.
var ErrInvalidGitbaseSession = errors.NewKind("expecting gitbase session, but received: %T")
ErrInvalidGitbaseSession is returned when some node expected a gitbase session but received something else.
var ErrNoRepositoryPartition = errors.NewKind("%T not a valid repository partition")
ErrNoRepositoryPartition is returned when the partition is not a valid repository partition.
var ErrPoolRepoNotFound = errors.NewKind("repository id %s not found in the pool")
ErrPoolRepoNotFound is returned when a repository id is not present in the pool.
var ErrSessionCanceled = errors.NewKind("session canceled")
ErrSessionCanceled is returned when session context is canceled
var FilesSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Source: "files"}, {Name: "file_path", Type: sql.Text, Source: "files"}, {Name: "blob_hash", Type: sql.Text, Source: "files"}, {Name: "tree_hash", Type: sql.Text, Source: "files"}, {Name: "tree_entry_mode", Type: sql.Text, Source: "files"}, {Name: "blob_content", Type: sql.Blob, Source: "files"}, {Name: "blob_size", Type: sql.Int64, Source: "files"}, }
FilesSchema is the schema for the files table.
var RefCommitsSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Source: RefCommitsTableName}, {Name: "commit_hash", Type: sql.Text, Source: RefCommitsTableName}, {Name: "ref_name", Type: sql.Text, Source: RefCommitsTableName}, {Name: "history_index", Type: sql.Int64, Source: RefCommitsTableName}, }
RefCommitsSchema is the schema for the ref commits table.
var RefsSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Nullable: false, Source: ReferencesTableName}, {Name: "ref_name", Type: sql.Text, Nullable: false, Source: ReferencesTableName}, {Name: "commit_hash", Type: sql.Text, Nullable: false, Source: ReferencesTableName}, }
RefsSchema is the schema for the refs table.
var RegMatchChars = regexp.MustCompile(`(^|[^\\])([*[?])`)
RegMatchChars matches a string with a glob expression inside.
var RemotesSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Nullable: false, Source: RemotesTableName}, {Name: "remote_name", Type: sql.Text, Nullable: false, Source: RemotesTableName}, {Name: "remote_push_url", Type: sql.Text, Nullable: false, Source: RemotesTableName}, {Name: "remote_fetch_url", Type: sql.Text, Nullable: false, Source: RemotesTableName}, {Name: "remote_push_refspec", Type: sql.Text, Nullable: false, Source: RemotesTableName}, {Name: "remote_fetch_refspec", Type: sql.Text, Nullable: false, Source: RemotesTableName}, }
RemotesSchema is the schema for the remotes table.
var RepositoriesSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Nullable: false, Source: RepositoriesTableName}, }
RepositoriesSchema is the schema for the repositories table.
var TreeEntriesSchema = sql.Schema{ {Name: "repository_id", Type: sql.Text, Nullable: false, Source: TreeEntriesTableName}, {Name: "tree_entry_name", Type: sql.Text, Nullable: false, Source: TreeEntriesTableName}, {Name: "blob_hash", Type: sql.Text, Nullable: false, Source: TreeEntriesTableName}, {Name: "tree_hash", Type: sql.Text, Nullable: false, Source: TreeEntriesTableName}, {Name: "tree_entry_mode", Type: sql.Text, Nullable: false, Source: TreeEntriesTableName}, }
TreeEntriesSchema is the schema for the tree entries table.
Functions ¶
func IsSivaFile ¶ added in v0.16.0
IsSivaFile checks that the given file is a siva file.
func NewChainableRowIter ¶ added in v0.14.0
func NewChainableRowIter(iter ChainableIter) sql.RowIter
NewChainableRowIter converts a ChainableIter into a sql.RowIter.
func NewCommitsByHashIter ¶ added in v0.13.0
func NewCommitsByHashIter( repo *Repository, hashes []plumbing.Hash, ) (object.CommitIter, error)
NewCommitsByHashIter creates a CommitIter that can use a list of hashes to iterate. If the list is empty it scans all commits.
func NewDatabase ¶ added in v0.6.0
func NewDatabase(name string, pool *RepositoryPool) sql.Database
NewDatabase creates a new Database structure and initializes its tables with the given pool
func NewSchemaMapperIter ¶ added in v0.17.0
NewSchemaMapperIter reorders the rows in the given row iter according to the given column mappings.
func NewSessionBuilder ¶ added in v0.10.0
func NewSessionBuilder(pool *RepositoryPool, opts ...SessionOption) server.SessionBuilder
NewSessionBuilder creates a SessionBuilder with the given Repository Pool.
func PatternMatches ¶ added in v0.14.0
PatternMatches returns the paths matched and any error found.
Types ¶
type BblfshClient ¶ added in v0.14.0
BblfshClient is a wrapper around a bblfsh client to extend its functionality.
func (*BblfshClient) IsLanguageSupported ¶ added in v0.14.0
IsLanguageSupported returns whether the language is supported in the bblfsh server this client is connected to.
func (*BblfshClient) Parse ¶ added in v0.14.0
func (c *BblfshClient) Parse( ctx context.Context, lang string, content []byte, ) (bblfsh.Node, string, error)
Parse the given content with the given language.
func (*BblfshClient) ParseWithMode ¶ added in v0.16.0
func (c *BblfshClient) ParseWithMode( ctx context.Context, mode bblfsh.Mode, lang string, content []byte, ) (bblfsh.Node, string, error)
ParseWithMode the given content with the given language.
func (*BblfshClient) SupportedLanguages ¶ added in v0.14.0
func (c *BblfshClient) SupportedLanguages(ctx context.Context) ([]string, error)
SupportedLanguages returns the list of supported languages for the bblfsh server this client is connected to.
type BlobsIter ¶ added in v0.11.0
type BlobsIter interface { ChainableIter Blob() *object.Blob }
BlobsIter is a chainable iterator that operates on blobs.
func NewAllCommitBlobsIter ¶ added in v0.13.0
func NewAllCommitBlobsIter(filters sql.Expression) BlobsIter
NewAllCommitBlobsIter returns all commit_blobs.
func NewCommitBlobBlobsIter ¶ added in v0.13.0
func NewCommitBlobBlobsIter( commitBlobs BlobsIter, filters sql.Expression, readContent bool, ) BlobsIter
NewCommitBlobBlobsIter returns the blobs for all commit blobs in the given iterator.
func NewCommitBlobsIter ¶ added in v0.11.0
func NewCommitBlobsIter( commits CommitsIter, filters sql.Expression, ) BlobsIter
NewCommitBlobsIter returns an iterator that will return all commit blobs of each commit in the given iterator.
func NewIndexCommitBlobsIter ¶ added in v0.14.0
func NewIndexCommitBlobsIter(index sql.IndexLookup, filters sql.Expression) BlobsIter
NewIndexCommitBlobsIter returns an iterator that will return all results in the given index.
func NewRepoBlobsIter ¶ added in v0.13.0
func NewRepoBlobsIter( repos ReposIter, filters sql.Expression, readContent bool, ) BlobsIter
NewRepoBlobsIter returns an iterator that will return all blobs for the repositories in the given iter that match the given filters.
func NewTreeEntryBlobsIter ¶ added in v0.11.0
func NewTreeEntryBlobsIter( squashTreeEntriesIter TreeEntriesIter, filters sql.Expression, readContent bool, ) BlobsIter
NewTreeEntryBlobsIter returns an iterator that will return all blobs for the tree entries in the given iter that match the given filters.
type ChainableIter ¶ added in v0.11.0
type ChainableIter interface { // New creates a new Chainable Iterator. New(*sql.Context, *Repository) (ChainableIter, error) // Close closes the iterator. Close() error // Repository returns the current repository the iterator is working on. Repository() *Repository // Row returns the current row. All calls to Row return the same row // until another call to Advance. Advance should be called before // calling Row. Row() sql.Row // Advance advances the position of the iterator by one. After io.EOF // or any other error, this method should not be called. Advance() error // Schema returns the schema of the rows returned by this iterator. Schema() sql.Schema }
ChainableIter is an iterator meant to have a chaining-friendly API.
func NewCommitFileFilesIter ¶ added in v0.14.0
func NewCommitFileFilesIter( files FilesIter, filters sql.Expression, readContent bool, ) ChainableIter
NewCommitFileFilesIter returns all files for the commit files in the given iterator.
type CommitFile ¶ added in v0.14.0
CommitFile is all the data needed to represent a file from a commit.
type CommitsIter ¶ added in v0.11.0
type CommitsIter interface { ChainableIter // Commit returns the current repository. All calls to Commit return the // same commit until another call to Advance. Advance should // be called before calling Commit. Commit() *object.Commit }
CommitsIter is a chainable iterator that operates on commits.
func NewAllCommitsIter ¶ added in v0.11.0
func NewAllCommitsIter(filters sql.Expression, virtual bool) CommitsIter
NewAllCommitsIter returns an iterator that will return all commits that match the given filters.
func NewAllRefCommitsIter ¶ added in v0.13.0
func NewAllRefCommitsIter(filters sql.Expression) CommitsIter
NewAllRefCommitsIter returns an iterator that will return all ref_commit rows.
func NewIndexCommitsIter ¶ added in v0.14.0
func NewIndexCommitsIter(index sql.IndexLookup, filters sql.Expression) CommitsIter
NewIndexCommitsIter returns an iterator that will return all results in the given index.
func NewRefCommitCommitsIter ¶ added in v0.13.0
func NewRefCommitCommitsIter(refCommits CommitsIter, filters sql.Expression) CommitsIter
NewRefCommitCommitsIter returns an iterator that will return commits based on the ref_commits returned by the previous iterator.
func NewRefHEADCommitsIter ¶ added in v0.11.0
func NewRefHEADCommitsIter( refsIter RefsIter, filters sql.Expression, virtual bool, ) CommitsIter
NewRefHEADCommitsIter returns an iterator that will return the commit for the given iter reference heads that match the given filters.
func NewRefHeadRefCommitsIter ¶ added in v0.13.0
func NewRefHeadRefCommitsIter(refs RefsIter, filters sql.Expression) CommitsIter
NewRefHeadRefCommitsIter returns an iterator that will return all ref_commit rows of the HEAD commits in references of the given iterator.
func NewRefRefCommitsIter ¶ added in v0.13.0
func NewRefRefCommitsIter(refsIter RefsIter, filters sql.Expression) CommitsIter
NewRefRefCommitsIter returns an iterator that will return all ref_commits for all the references in the given iterator.
func NewRepoCommitsIter ¶ added in v0.13.0
func NewRepoCommitsIter(repos ReposIter, filters sql.Expression) CommitsIter
NewRepoCommitsIter is an iterator that returns all commits for the repositories returned by the given iterator.
type Database ¶ added in v0.6.0
type Database struct {
// contains filtered or unexported fields
}
Database holds all git repository tables
type FilesIter ¶ added in v0.13.0
type FilesIter interface { ChainableIter File() *object.File TreeHash() plumbing.Hash }
FilesIter is a chainable iterator that operates on files.
func NewAllCommitFilesIter ¶ added in v0.14.0
func NewAllCommitFilesIter(filters sql.Expression) FilesIter
NewAllCommitFilesIter returns an iterator that will return all commit files.
func NewCommitFilesIter ¶ added in v0.14.0
func NewCommitFilesIter(iter CommitsIter, filters sql.Expression) FilesIter
NewCommitFilesIter returns an iterator that will return all commit files for the commits in the given iterator.
func NewIndexCommitFilesIter ¶ added in v0.14.0
func NewIndexCommitFilesIter(index sql.IndexLookup, filters sql.Expression) FilesIter
NewIndexCommitFilesIter returns an iterator that will return all commit files for the commits in the given index.
type Indexable ¶ added in v0.13.0
type Indexable interface { sql.IndexableTable // contains filtered or unexported methods }
Indexable represents an indexable gitbase table.
type RefCommitsIter ¶ added in v0.13.0
type RefCommitsIter interface { CommitsIter // contains filtered or unexported methods }
RefCommitsIter is a chainable iterator that operates on ref_commits.
func NewIndexRefCommitsIter ¶ added in v0.14.0
func NewIndexRefCommitsIter(index sql.IndexLookup, filters sql.Expression) RefCommitsIter
NewIndexRefCommitsIter returns an iterator that will return all results in the given index.
type RefsIter ¶ added in v0.11.0
type RefsIter interface { ChainableIter // Ref returns the current repository. All calls to Ref return the // same reference until another call to Advance. Advance should // be called before calling Ref. Ref() *Ref }
RefsIter is a chainable iterator that operates on references.
func NewAllRefsIter ¶ added in v0.11.0
func NewAllRefsIter(filters sql.Expression, virtual bool) RefsIter
NewAllRefsIter returns an iterator that will return all references that match the given filters. If the iterator is virtual, it will always return an empty row and an empty schema. This is useful for passing it to other iterators that are chained with references but don't need the reference data in their output rows.
func NewIndexRefsIter ¶ added in v0.16.0
func NewIndexRefsIter(filters sql.Expression, index sql.IndexLookup) RefsIter
NewIndexRefsIter returns an iterator that will return all references that match the given filters in the given index.
func NewRemoteRefsIter ¶ added in v0.11.0
func NewRemoteRefsIter( remotesIter RemotesIter, filters sql.Expression, ) RefsIter
NewRemoteRefsIter returns an iterator that will return all references for the remotes returned by the given remotes iterator that match the given filters.
func NewRepoRefsIter ¶ added in v0.11.0
func NewRepoRefsIter( squashReposIter ReposIter, filters sql.Expression, virtual bool, ) RefsIter
NewRepoRefsIter returns an iterator that will return all references for the repositories of the given repos iterator that match the given filters.
type RemotesIter ¶ added in v0.11.0
type RemotesIter interface { ChainableIter // Remote returns the current repository. All calls to Remote return the // same remote until another call to Advance. Advance should // be called before calling Remote. Remote() *Remote }
RemotesIter is a chainable iterator that operates with remotes.
func NewAllRemotesIter ¶ added in v0.11.0
func NewAllRemotesIter(filters sql.Expression) RemotesIter
NewAllRemotesIter returns an iterator that will return all remotes that match the given filters.
func NewRepoRemotesIter ¶ added in v0.11.0
func NewRepoRemotesIter(squashReposIter ReposIter, filters sql.Expression) RemotesIter
NewRepoRemotesIter returns an iterator that will return all remotes for the given ReposIter repositories that match the given filters.
type ReposIter ¶ added in v0.11.0
type ReposIter interface { ChainableIter // contains filtered or unexported methods }
ReposIter is a chainable iterator that operates with repositories.
func NewAllReposIter ¶ added in v0.11.0
func NewAllReposIter(filters sql.Expression) ReposIter
NewAllReposIter returns an iterator that will return all repositories that match the given filters.
type Repository ¶ added in v0.10.0
type Repository struct { *git.Repository ID string // contains filtered or unexported fields }
Repository struct holds an initialized repository and its ID
func NewRepository ¶ added in v0.10.0
func NewRepository(id string, repo *git.Repository, closeFunc func()) *Repository
NewRepository creates and initializes a new Repository structure
func NewRepositoryFromPath ¶ added in v0.10.0
func NewRepositoryFromPath(id, path string, cache cache.Object) (*Repository, error)
NewRepositoryFromPath creates and initializes a new Repository structure and initializes a go-git repository
func NewSivaRepositoryFromPath ¶ added in v0.11.0
func NewSivaRepositoryFromPath(id, path string, cache cache.Object) (*Repository, error)
NewSivaRepositoryFromPath creates and initializes a new Repository structure and initializes a go-git repository backed by a siva file.
func (*Repository) Close ¶ added in v0.17.0
func (r *Repository) Close()
Close closes all opened files in the repository.
type RepositoryIter ¶ added in v0.10.0
type RepositoryIter struct {
// contains filtered or unexported fields
}
RepositoryIter iterates over all repositories in the pool
func (*RepositoryIter) Close ¶ added in v0.10.0
func (i *RepositoryIter) Close() error
Close finished iterator. It's no-op.
func (*RepositoryIter) Next ¶ added in v0.10.0
func (i *RepositoryIter) Next() (*Repository, error)
Next retrieves the next Repository. It returns io.EOF as error when there are no more Repositories to retrieve.
type RepositoryPartition ¶ added in v0.17.0
type RepositoryPartition string
RepositoryPartition represents a partition which is a repository id.
func (RepositoryPartition) Key ¶ added in v0.17.0
func (p RepositoryPartition) Key() []byte
Key implements the sql.Partition interface.
type RepositoryPool ¶ added in v0.10.0
type RepositoryPool struct {
// contains filtered or unexported fields
}
RepositoryPool holds a pool git repository paths and functionality to open and iterate them.
func NewRepositoryPool ¶ added in v0.10.0
func NewRepositoryPool(maxCacheSize cache.FileSize) *RepositoryPool
NewRepositoryPool initializes a new RepositoryPool with LRU cache.
func (*RepositoryPool) Add ¶ added in v0.10.0
func (p *RepositoryPool) Add(repo repository) error
Add inserts a new repository in the pool.
func (*RepositoryPool) AddGit ¶ added in v0.10.0
func (p *RepositoryPool) AddGit(path string) error
AddGit adds a git repository to the pool. It also sets its path as ID.
func (*RepositoryPool) AddGitWithID ¶ added in v0.14.0
func (p *RepositoryPool) AddGitWithID(id, path string) error
AddGitWithID adds a git repository to the pool. ID should be specified.
func (*RepositoryPool) AddSivaFile ¶ added in v0.16.0
func (p *RepositoryPool) AddSivaFile(path string) error
AddSivaFile adds a siva file to the pool. It also sets its path as ID.
func (*RepositoryPool) AddSivaFileWithID ¶ added in v0.16.0
func (p *RepositoryPool) AddSivaFileWithID(id, path string) error
AddSivaFileWithID adds a siva file to the pool. ID should be specified.
func (*RepositoryPool) GetPos ¶ added in v0.10.0
func (p *RepositoryPool) GetPos(pos int) (*Repository, error)
GetPos retrieves a repository at a given position. If the position is out of bounds it returns io.EOF.
func (*RepositoryPool) GetRepo ¶ added in v0.13.0
func (p *RepositoryPool) GetRepo(id string) (*Repository, error)
GetRepo returns a repository with the given id from the pool.
func (*RepositoryPool) RepoIter ¶ added in v0.10.0
func (p *RepositoryPool) RepoIter() (*RepositoryIter, error)
RepoIter creates a new Repository iterator
type Session ¶ added in v0.10.0
type Session struct { sql.Session Pool *RepositoryPool SkipGitErrors bool // contains filtered or unexported fields }
Session is the custom implementation of a gitbase session.
func NewSession ¶ added in v0.10.0
func NewSession(pool *RepositoryPool, opts ...SessionOption) *Session
NewSession creates a new Session. It requires a repository pool and any number of session options can be passed to configure the session.
func (*Session) BblfshClient ¶ added in v0.11.0
func (s *Session) BblfshClient() (*BblfshClient, error)
BblfshClient returns a BblfshClient.
type SessionOption ¶ added in v0.11.0
type SessionOption func(*Session)
SessionOption is a function that configures the session given some options.
func WithBaseSession ¶ added in v0.17.0
func WithBaseSession(sess sql.Session) SessionOption
WithBaseSession sets the given session as the base session.
func WithBblfshEndpoint ¶ added in v0.11.0
func WithBblfshEndpoint(endpoint string) SessionOption
WithBblfshEndpoint configures the bblfsh endpoint of the session.
func WithSkipGitErrors ¶ added in v0.11.0
func WithSkipGitErrors(enabled bool) SessionOption
WithSkipGitErrors changes the behavior with go-git error.
type Squashable ¶ added in v0.13.0
type Squashable interface {
// contains filtered or unexported methods
}
Squashable represents a table that can be squashed.
type SquashedTable ¶ added in v0.17.0
type SquashedTable struct {
// contains filtered or unexported fields
}
SquashedTable is a table that combines the output of some tables as the inputs of others with chaining so it's less expensive to compute.
func NewSquashedTable ¶ added in v0.17.0
func NewSquashedTable( iter ChainableIter, mapping []int, filters []sql.Expression, indexedTables []string, tables ...string, ) *SquashedTable
NewSquashedTable creates a new SquashedTable.
func (*SquashedTable) Name ¶ added in v0.17.0
func (t *SquashedTable) Name() string
Name implements the sql.Table interface.
func (SquashedTable) PartitionCount ¶ added in v0.17.0
func (*SquashedTable) PartitionRows ¶ added in v0.17.0
PartitionRows implements the sql.Table interface.
func (SquashedTable) Partitions ¶ added in v0.17.0
func (SquashedTable) Partitions(ctx *sql.Context) (sql.PartitionIter, error)
func (*SquashedTable) Schema ¶ added in v0.17.0
func (t *SquashedTable) Schema() sql.Schema
Schema implements the sql.Table interface.
func (*SquashedTable) String ¶ added in v0.17.0
func (t *SquashedTable) String() string
type Table ¶ added in v0.11.0
type Table interface { sql.FilteredTable sql.Checksumable sql.PartitionCounter // contains filtered or unexported methods }
Table represents a gitbase table.
type TreeEntriesIter ¶ added in v0.11.0
type TreeEntriesIter interface { ChainableIter // TreeEntry returns the current tree entry. All calls to TreeEntry return the // same tree entries until another call to Advance. Advance should // be called before calling TreeEntry. TreeEntry() *TreeEntry }
TreeEntriesIter is a chainable iterator that operates on Tree Entries.
func NewAllTreeEntriesIter ¶ added in v0.11.0
func NewAllTreeEntriesIter(filters sql.Expression) TreeEntriesIter
NewAllTreeEntriesIter returns an iterator that will return all tree entries that match the given filters.
func NewIndexTreeEntriesIter ¶ added in v0.14.0
func NewIndexTreeEntriesIter(index sql.IndexLookup, filters sql.Expression) TreeEntriesIter
NewIndexTreeEntriesIter returns an iterator that will return all results in the given index.
func NewRepoTreeEntriesIter ¶ added in v0.13.0
func NewRepoTreeEntriesIter(repos ReposIter, filters sql.Expression) TreeEntriesIter
NewRepoTreeEntriesIter returns an iterator that will return all tree entries for every repo returned by the given iterator.
func NewTreeTreeEntriesIter ¶ added in v0.13.0
func NewTreeTreeEntriesIter( trees TreesIter, filters sql.Expression, virtual bool, ) TreeEntriesIter
NewTreeTreeEntriesIter returns an iterator that will return all tree entries for the trees returned by the given iterator.
type TreesIter ¶ added in v0.13.0
type TreesIter interface { ChainableIter // Tree returns the current tree. All calls to Tree return the same tree // until another call to Advance. Advance should be called before calling // Tree. Tree() *object.Tree }
TreesIter is a chainable iterator that operates on trees.
func NewAllCommitTreesIter ¶ added in v0.13.0
func NewAllCommitTreesIter(filters sql.Expression) TreesIter
NewAllCommitTreesIter returns all commit trees.
func NewCommitMainTreeIter ¶ added in v0.13.0
func NewCommitMainTreeIter( commits CommitsIter, filters sql.Expression, virtual bool, ) TreesIter
NewCommitMainTreeIter returns all main trees from the commits returned by the given commits iterator.
func NewCommitTreesIter ¶ added in v0.13.0
func NewCommitTreesIter( commits CommitsIter, filters sql.Expression, virtual bool, ) TreesIter
NewCommitTreesIter returns all trees from the commits returned by the given commits iterator.
func NewIndexCommitTreesIter ¶ added in v0.14.0
func NewIndexCommitTreesIter(index sql.IndexLookup, filters sql.Expression) TreesIter
NewIndexCommitTreesIter returns an iterator that will return all results in the given index.
Source Files ¶
- blobs.go
- checksum.go
- commit_blobs.go
- commit_files.go
- commit_trees.go
- commits.go
- database.go
- env.go
- files.go
- filters.go
- index.go
- packfiles.go
- partition.go
- path_utils.go
- ref_commits.go
- references.go
- remotes.go
- repositories.go
- repository_pool.go
- session.go
- squash.go
- squash_iterator.go
- table.go
- tree_entries.go
- utils.go