GithubHelp home page GithubHelp logo

f2er / js-git Goto Github PK

View Code? Open in Web Editor NEW

This project forked from creationix/js-git

0.0 2.0 0.0 548 KB

A JavaScript implementation of Git.

Home Page: https://www.bountysource.com/#fundraisers/325-js-git

License: MIT License

js-git's Introduction

JS-Git

JS-Git is an open source project implementing git client and server in pure JavaScript.

Why Re-implement Git in JavaScript?

JavaScript has farther reach than any other programming language out there. It can run on tablets, phones, laptops, Chromebooks, and pretty much anything that has a browser. Also thanks to node.js, it can run in many headless server environments as well.

Git is an amazing tool for sharing code and data in a distributed manner. Adding this to everyone's tool-chain will enable many great tools and products.

Target Platforms

My goal is to target every platform that has enough primitives to make sense. This includes:

  • ChromeOS Apps
  • Firefox OS Apps
  • Windows RT WinJS Apps
  • HTML5 Web Apps (on all modern browsers, including IE 10)
  • PhoneGap Apps
  • Desktop Chrome Apps
  • Anything else that has network access, persistent storage, and binary data support in JavaScript.

Feature Goals

I don't intent to make a 100% clone of all the features of the official git program. That would be insane and require a lot more money than I'm asking for. My main goal is to enable the 90% case of interesting stuff:

  • Clone remote repositories to local storage over http, git, or ssh.
  • Make and commit local changes offline.
  • Manage tags and branches offline.
  • Push changes back up to remote repositories.
  • Serve git repositories over http, git, or ssh.
  • Be very modular so bits can be used by any software that needs them.

Potential Products

Some example products that would be enabled by this are:

  • ChromeOS IDE for developing on Chromebooks.
  • Node.JS blog engine with git as the database.
  • Custom Git hosting using custom storage back-ends.
  • GIT CLI for restricted environments.
  • Standalone GIT GUI desktop app.
  • Git based deployment tools.
  • JavaScript package management for server and client.
  • Whatever else you come up with.

For the Children

My main driving force is to build a programming environment to teach kids to program. It needs to run on the devices that the kids already have. There are a lot of youth who have access to tablets or Chromebooks, but have no way to program properly on them. I want to change this and give them the tools to eventually become professional programmers.

JS-Git in a Chrome App

One sample application that I'm using to test my code is known as js-git-app.

JS-Git App

This app is still in the early stages, It's available in the Chrome app store to test on any device that has Chrome installed.

JS-Git as a Node.JS CLI Tool

Another sample usage is js-git-node.

JS-Git Node Clone

This is a CLI tool that can replace a subset of the git command-line tool. This is useful on platforms that have node.js, but it's still hard to install git. (windows, crosh shell, etc...)

Related Packages

Not all parts of js-git are in this package. Of note, the min-stream code is already factored out into several standalone packages.

  • min-stream - Helpers for working with min-streams.
  • min-stream-node - A node.js adapter that provides tcp client and server as well as file streams using min-streams.
  • min-stream-uv - A crazy experiment to implement the same interface as min-stream-node, but using node's private internal libuv bindings for maximum speed and unstability.
  • min-stream-chrome - Another implementation of the tcp and fs API, but wrapping chrome packaged apps's special APIs.
  • min-stream-http-codec - A set of filters that makes implementing HTTP clients and servers easy.

Projects using JS-Git

  • js-git-app - A chrome packaged app used to demo/test using js-git in a chrome environment.
  • js-git-node - A node CLI tool used to demo/test using js-git in the node.js environment.

js-git's People

Watchers

 avatar  avatar

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.