Crate git_indexer

Crate git_indexer 

Source
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 metadata
  • Commit - Commit metadata
  • FileChange - 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.