Git Product home page Git Product logo

AmpScm - Amplifying your Git Source Code Management

CI

This project provides a few layers of tools that allow accessing your repository from .Net without external dependencies. Unlike the libGit2 apis the code is completely managed, 100% Apache 2 Licensed, and uses many optional modern Git optimizations (E.g. commit chains, bitmap indexes, etc.) to improve performance over just scanning the repository. So all of this is available for Windows, Linux, Mac OS and even mobile platforms with .Net support (Android, iOS).

To allow easy embedding everything is implemented streamy instead of memory mapped files, to allow working in memory restrained circumstances (like 32 bit code), or as plugin in an existing application.

AmpScm.Buckets

latest version

This library provides zero-copy stream layering over different datasources, modeled like the Apache Serf buckets, but then completely .Net based and fully Async enabled. When you read a bit of data the least amount of work necessary is done up the tree, and only if the highest upper layer reports a delay the task is waiting.

AmpScm.Git.Repository

latest version

Completely managed Git repository level library, providing access to the repository as both IQueryable<> and IAsyncQueryable<>, to allow extending the repository walk algorithm with simple linq interaction.

Soon walking history should be as easy as something like:

// Async
using AmpScm.Git;
    
using (var repo = await GitRepository.OpenAsync(Environment.CurrentDirectory))
{
    await foreach (var r in repo.Head.Revisions)
    {
        Console.WriteLine($"commit {r.Commit.Id}");
        Console.WriteLine($"Author: {r.Commit.Author}"); // Includes timestamp
        Console.WriteLine("");
        Console.WriteLine(r.Commit.Message?.TrimEnd() + "\n");
    }
}

Of course you can also use the non async api if needed. This repository layer is built on top of Amp.Buckets via AmpScm.Buckets.Git, which could be used separately if you want to write your own repository layer.

The IAsyncQueryable<T> support is supported via the hopefully temporary AmpScm.Linq.AsyncQueryable, to avoid usage conflicts between the async and non async implementations that occur when you implement both. (Let's hope this will be fixed in the BCL)

// Non-Async
using AmpScm.Git;
    
using (var repo = GitRepository.Open(Environment.CurrentDirectory))
{
    foreach (var r in repo.Head.Revisions)
    {
        Console.WriteLine($"commit {r.Commit.Id}");
        Console.WriteLine($"Author: {r.Commit.Author}"); // Includes timestamp
        Console.WriteLine("");
        Console.WriteLine(r.Commit.Message?.TrimEnd() + "\n");
    }
}

Currently this library is mostly read-only, but writing simple database entities (blob, commit, tree, tag) to the object store is supported.

AmpScm.Git.Client

latest version

Built on top of the git repository is an early release quick and dirty Git client layer, which forwards operations to the git plumbing code. Mostly intended for testing the lower layers, but probly useful for more users. May become a more advanced client later on.

Git On Disk Format Support

Feature GIT LibGit2 JGit AmpScm
Loose Objects Yes Yes Yes Yes
Packed Object Files Yes Yes Yes Yes
Loose References Yes Yes Yes Yes
Packed References Yes Yes Yes Yes
Sha256 Repositories Yes No No Yes
Reference Table format Expected Soon No Yes Expected Soon
Reference Log Yes Yes Yes Yes
Multipack index Yes Yes No Yes
CommitGraph Yes Yes Soon Yes
Bitmap index Packfiles Yes No Yes Yes
Bitmap index Multipack Index Yes No No Yes
Reverse index Packfiles Yes No No Yes
Reverse index Multipack Index Yes No No Yes
Directory Index format 2,3 Yes Yes Yes Yes
Directory Index format 4 Yes Yes Yes Yes
Split Directory Index format Yes No No Yes
Sparse Index (Cone) support Yes No No Yes
Fast Import support Yes No No Yes
Bundle support Yes No No Yes
'mergetag' (inspect) support Yes No No Yes
OpenPGP signature verification Yes No No Yes
(Open)SSH signature verification Yes No No Yes

Amp Scm - Amplify Source Code Management's Projects

ampparser icon ampparser

Parsing tooling - Script validation/inspection

ampscm icon ampscm

AmpScm aims to empower/"Amplify" Source Code management tooling.

ankhsvn icon ankhsvn

AnkhSVN provides first class Subversion support for all recent Visual Studio versions.

sharpgit icon sharpgit

Git support for .Net 4.x, based on libgit2 but wrapped to a higher level library.

sharpsvn icon sharpsvn

Subversion wrapped for .Net 4.0+ and .Net Core

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.