Documentation ¶
Index ¶
Constants ¶
View Source
const ( // ALL_BRANCHES is a placeholder which can be used to retrieve IndexCommits // for every branch, as opposed to just one. ALL_BRANCHES = "@all-commits" // DELETE_BRANCH is a placeholder which can be used as a value in the // branch map passed to GitStore.PutBranches to signify that the branch // should be deleted. DELETE_BRANCH = "@DELETE" )
Variables ¶
This section is empty.
Functions ¶
func GetRepoGraph ¶
GetRepoGraph returns *repograph.Graph backed by the given GitStore.
Types ¶
type BranchPointer ¶
BranchPointer captures the HEAD of a branch and the index of that commit.
type GitStore ¶
type GitStore interface { // Put stores the given commits. They can be retrieved in order of timestamps by using // RangeByTime or RangeN (no topological ordering). The Index and Branch information // on the commits must be correct, or the results of RangeN and RangeByTime will not // be correct. Put(ctx context.Context, commits []*vcsinfo.LongCommit) error // Get retrieves the commits identified by 'hashes'. The return value will always have the // length of the input value and the results will line up by index. If a commit does not exist // the corresponding entry in the result is nil. // The function will only return an error if the retrieval operation (the I/O) fails, not // if the given hashes do not exist or are invalid. Get(ctx context.Context, hashes []string) ([]*vcsinfo.LongCommit, error) // PutBranches updates the given branch heads in the GitStore. The 'branches' parameter // maps branch name to commit hash to indicate the head of a branch. All of the referenced // commits must already exist in the GitStore. If the DELETE_BRANCH string is used instead // of a commit hash, then the branch is removed. Any existing branches which are not // included in the call to PutBranches are left unchanged. PutBranches(ctx context.Context, branches map[string]string) error // GetBranches returns the current branches in the store. It maps[branchName]->BranchPointer. // A BranchPointer contains the HEAD commit and also the Index of the HEAD commit, which is // usually the total number of commits in the branch minus 1. GetBranches(ctx context.Context) (map[string]*BranchPointer, error) // RangeN returns all commits in the half open index range [startIndex, endIndex), thus not // including endIndex. It returns the commits in the given branch sorted in ascending // order by Index, which only includes commits on the first-parent ancestry chain, per the // definition of vcsinfo.IndexCommit. This does not make sense for branch == ALL_BRANCHES, // because different lines of history may use the same indexes. Therefore, the results of // RangeN for ALL_BRANCHES may not be complete or correct. RangeN(ctx context.Context, startIndex, endIndex int, branch string) ([]*vcsinfo.IndexCommit, error) // RangeByTime returns all commits in the half open time range [start, end), thus not // including commits at 'end' time. Set branch = ALL_BRANCHES to retrieve all commits // for every branch within the specified range. // Caveat: The returned results will match the requested range, but will be sorted by Index. // So if the timestamps of the commits within a branch are not in order they will be // unordered in the results. In the case of branch == ALL_BRANCHES, some indexes may be // repeated, because different lines of history may use the same indexes. RangeByTime(ctx context.Context, start, end time.Time, branch string) ([]*vcsinfo.IndexCommit, error) }
GitStore defines the functions of a data store for Git metadata (aka vcsinfo.LongCommit) Each GitStore instance relates to one repository that is defined in the constructor of the implementation.
type RepoInfo ¶
type RepoInfo struct { // Numeric id of the repo. This is unique within all repos in a BT table. This ID is uniquely // assigned whenever a new repo is added. ID int64 // RepoURL contains the URL of the repo as returned by git.NormalizeURL(...). RepoURL string // Branches contain all the branches in the repo, mapping branch_name -> branch_pointer. Branches map[string]*BranchPointer }
RepoInfo contains information about one repo in the GitStore.
Click to show internal directories.
Click to hide internal directories.