npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@openiap/cloud-git-mongodb

v1.0.6

Published

Node.js git server for cloud-native applications

Downloads

50

Readme

Cloud-git: Node.js git server for cloud-native applications

Cloud-git is a 100% JavaScript git server you can expose as part of the HTTP APIs of your app:

  • Expose a Git repository as an Express route of your application.
  • Pure JavaScript, no dependencies on native git libraries.
  • Extensible to use any cloud-native storage like AWS S3, no dependency on the file system.
  • HTTP or HTTPS.
  • Read/write (push/pull).
  • Supports authentication.
  • Can be used with regular git CLI.

Demo

For the demo, you can either create a .env file with your configuration settings or supply the MongoDB URL directly as an environment variable when starting the server. Additionally, there is an option to use a memory provider instead of MongoDB for testing purposes.

npm i
MONGO_URL=mongodb://localhost:27017 node sample/server.js
# or to use memory provider
node sample/server.js

MongoDB Repository

When using MongoGitRepository, it is necessary to provide:

  • A MongoDB database instance.
  • A collection name to store REFs in, which includes branch and tag references.
  • A "path" which acts as the repository name.

This setup will create a GridFS bucket to store all files in. If your path is test/myrepp, you will get a test_myrepp.files and test_myrepp.chunks collection that MongoDB uses to store files. Pushing to a repo will by default create repositories named main or master as the HEAD repo. You can set repo.uploadasync to false to speed up uploads at the risk of potential inconsistency in the repository, though this is not recommended.

In addition to the original functionality of cloud-git, this version has added:

  • report-status: Adds report-status capability.
  • parseCommit: Parses a commit object and returns commit information.
  • parseTag: Parses a tag object and returns tag information.
  • parseTree: Traverses a tree object and returns the directory listing inside it. If recursive is true, it also traverses all subfolders found and adds them as a subtree to each directory.
  • GetTree: Given the SHA of a commit or tree, it retrieves the directory listing for that.

The main differences from the original repository include support for git commands sending data gzip compressed, parsing packs after the client has sent all data to drastically improve speed and lower memory usage, fixing the retrieval of former objects when handling deltified files, minor syntax updates for easier integration into TypeScript projects, and more.

Usage

For full usage description and more information, see the original cloud-git repository.