{"id":19606279,"url":"https://github.com/ampscm/ampscm","last_synced_at":"2026-05-15T04:31:41.708Z","repository":{"id":37238708,"uuid":"356911581","full_name":"AmpScm/AmpScm","owner":"AmpScm","description":"AmpScm aims to empower/\"Amplify\" Source Code management tooling.","archived":false,"fork":false,"pushed_at":"2024-01-30T15:06:37.000Z","size":3054,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-28T06:46:01.666Z","etag":null,"topics":["git","scm","subversion"],"latest_commit_sha":null,"homepage":"https://amp-scm.com/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AmpScm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-11T15:55:01.000Z","updated_at":"2024-07-12T08:28:22.982Z","dependencies_parsed_at":"2023-12-28T12:40:36.420Z","dependency_job_id":"3a42e56d-efed-4f97-8ceb-3770dd9d221b","html_url":"https://github.com/AmpScm/AmpScm","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmpScm%2FAmpScm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmpScm%2FAmpScm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmpScm%2FAmpScm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmpScm%2FAmpScm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AmpScm","download_url":"https://codeload.github.com/AmpScm/AmpScm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240894277,"owners_count":19874789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","scm","subversion"],"created_at":"2024-11-11T10:04:06.741Z","updated_at":"2026-05-15T04:31:41.698Z","avatar_url":"https://github.com/AmpScm.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AmpScm - Amplifying your Git Source Code Management\n[![CI](https://github.com/AmpScm/AmpScm/actions/workflows/msbuild.yml/badge.svg)](https://github.com/AmpScm/AmpScm/actions/workflows/msbuild.yml)\n\nThis 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).\n\nTo 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.\n\n## AmpScm.Buckets\n[![latest version](https://img.shields.io/nuget/v/AmpScm.Buckets)](https://www.nuget.org/packages/AmpScm.Buckets)\n\nThis 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.\n\n## AmpScm.Git.Repository\n[![latest version](https://img.shields.io/nuget/v/AmpScm.Git.Repository)](https://www.nuget.org/packages/AmpScm.Git.Repository)\n\nCompletely managed Git repository level library, providing access to the repository as both *IQueryable\u003c\u003e* and *IAsyncQueryable\u003c\u003e*, to allow extending the repository walk algorithm with simple linq interaction.\n  \nSoon walking history should be as easy as something like:\n  \n```cs\n// Async\nusing AmpScm.Git;\n    \nusing (var repo = await GitRepository.OpenAsync(Environment.CurrentDirectory))\n{\n    await foreach (var r in repo.Head.Revisions)\n    {\n        Console.WriteLine($\"commit {r.Commit.Id}\");\n        Console.WriteLine($\"Author: {r.Commit.Author}\"); // Includes timestamp\n        Console.WriteLine(\"\");\n        Console.WriteLine(r.Commit.Message?.TrimEnd() + \"\\n\");\n    }\n}\n```\n\nOf 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\nbe used separately if you want to write your own repository layer.\n\nThe `IAsyncQueryable\u003cT\u003e` 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)\n  \n```cs\n// Non-Async\nusing AmpScm.Git;\n    \nusing (var repo = GitRepository.Open(Environment.CurrentDirectory))\n{\n    foreach (var r in repo.Head.Revisions)\n    {\n        Console.WriteLine($\"commit {r.Commit.Id}\");\n        Console.WriteLine($\"Author: {r.Commit.Author}\"); // Includes timestamp\n        Console.WriteLine(\"\");\n        Console.WriteLine(r.Commit.Message?.TrimEnd() + \"\\n\");\n    }\n}\n```\n \n  \nCurrently this library is mostly read-only, but writing simple database entities (blob, commit, tree, tag) to the object store is supported.\n  \n## AmpScm.Git.Client\n[![latest version](https://img.shields.io/nuget/v/AmpScm.Git.Client)](https://www.nuget.org/packages/AmpScm.Git.Client)\n  \nBuilt 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\nintended for testing the lower layers, but probly useful for more users. May become a more advanced client later on.\n\n\n## Git On Disk Format Support\n|Feature                           | GIT    | LibGit2  | JGit    | AmpScm |\n| -------------------------------- | ------ | -------- | ------- | ------ |\n| Loose Objects                    | Yes    | Yes      | Yes     | Yes    |\n| Packed Object Files              | Yes    | Yes      | Yes     | Yes    |\n| Loose References                 | Yes    | Yes      | Yes     | Yes    |\n| Packed References                | Yes    | Yes      | Yes     | Yes    |\n| Sha256 Repositories              | Yes    | No       | No      | Yes    |\n| Reference Table format           | Yes    | No       | Yes     | Yes    |\n| Reference Log                    | Yes    | Yes      | Yes     | Yes    |\n| Multipack index                  | Yes    | Yes      | No      | Yes    |\n| CommitGraph                      | Yes    | Yes      | Soon    | Yes    |\n| Bitmap index Packfiles           | Yes    | No       | Yes     | Yes    |\n| Bitmap index Multipack Index     | Yes    | No       | No      | Yes    |\n| Reverse index Packfiles          | Yes    | No       | No      | Yes    |\n| Reverse index Multipack Index    | Yes    | No       | No      | Yes    |\n| Directory Index format 2,3       | Yes    | Yes      | Yes     | Yes    |\n| Directory Index format 4         | Yes    | Yes      | Yes     | Yes    |\n| Split Directory Index format     | Yes    | No       | No      | Yes    |\n| Sparse Index (Cone) support      | Yes    | No       | No      | Yes    |\n| Fast Import support              | Yes    | No       | No      | Yes    |\n| Bundle support                   | Yes    | No       | No      | Yes    |\n| 'mergetag' (inspect) support     | Yes    | No       | No      | Yes    |\n| OpenPGP signature verification   | Yes    | No       | No      | Yes    |\n| (Open)SSH signature verification | Yes    | No       | No      | Yes    |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fampscm%2Fampscm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fampscm%2Fampscm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fampscm%2Fampscm/lists"}