Expand description
Git repository indexer for Helix DB graph database.
This crate provides functionality to extract information from git repositories and index it into a Helix DB graph database instance.
§Features
- Extract branches, commits, and file changes from git repositories
- Generate diffs for file changes
- Push git data to Helix DB as nodes and edges
§Quick Start
§Standalone Extraction
Extract git information without pushing to Helix DB:
use git_indexer::extraction::extract;
use std::path::Path;
let git_info = extract(Path::new("/path/to/repo")).unwrap();
println!("Branches: {}", git_info.branches.len());
println!("Commits: {}", git_info.commits.len());
for commit in &git_info.commits {
println!("{}: {}", &commit.id[..8], commit.message);
}§Helix DB Integration
Index a repository into a Helix DB instance:
use git_indexer::GitIndexerClient;
let client = GitIndexerClient::builder()
.endpoint("http://localhost:6969")
.build()?;
// Extract and push to Helix DB
let git_info = client.index_repository("/path/to/repo").await?;§Data Model
The crate extracts the following git objects:
- Branches (
BranchInfo): Local and remote branch references - Commits (
CommitInfo): Commit metadata with parent relationships - File Changes (
FileChange): Files modified in each commit with diffs - Diff Hunks (
DiffHunk): Individual change blocks within files
§Helix DB Graph Structure
When indexed to Helix DB, the data is stored as:
Nodes:
Branch- Branch metadataCommit- Commit metadataFileChange- File modification with diff
Edges:
Commit -> Commit(parent relationship)Branch -> Commit(branch tip)Commit -> FileChange(files changed in commit)
Re-exports§
pub use client::GitIndexerClient;pub use client::GitIndexerClientBuilder;pub use error::Error;pub use error::Result;pub use models::BranchInfo;pub use models::ChangeType;pub use models::CommitInfo;pub use models::DiffHunk;pub use models::FileChange;pub use models::GitInfo;
Modules§
- client
- Helix DB client for indexing git repositories.
- error
- Error types for the git-indexer crate.
- extraction
- Git repository extraction functionality.
- models
- Data models for git repository information.