Marionette.Github.js provides a Backbone models/collections for User, Repository, Branches/Tags, Tree and Content APIs. and Marionette's controller for the multiple files commit and conflicts detection.
TBD
Create a Github instance.
var github = new Github({
username: "YOUR_USER",
token: "YOUR_TOKEN"
});
Get user and repositories
// get loged-in user
var user = github.getUser(), // Backbone.Model
//get repositories
repos = user.getRepositries(), // Backbone.Collection
repo = repos.getRepository('REPO_NAME'), // Backbone.Model
Get Branches and Tags
// get branches
branches = repo.getBranches(), // Backbone.Collection
branch = branches.getBranch('BRANCH_NAME') // Backbone.Model
// get Tags
tags = repo.getTags(), // Backbone.Collection
tag = branches.getTag('TAG_NAME'), // Backbone.Model
Get Tree and CotnentCache
// Raw tree
tree = branch.getTree(); // Backbone.Collection
tree.on("add", tree.loadSubTree, tree); // load tree recusively [just an example]
tree.fetch(); // start tree loading
// Content
var contentCache = branch.getContentCache(); // Backbone.Collection
contentCache.load({sha: 'SHA', path: 'path'}); // load content by sha or path
[Github API OAuth Overview] (http://developer.github.com/v3/oauth)
var logedInUser = github.getUser();
var anyUser = github.getUser(username);
// Get user repositories as Backbone.Collection
var userRepos = user.getRepositories();
// or
userRepos = github.getRepositories(username);
// Get repository item without collection fetch:
var repoItem = userRepos.getRepository('REPO_NAME'); // Backbone.Model
repoItem.fetch();
// Fetch all repositories from Gtihub
userRepos.fetch({
success: function() {},
error: functinon() {}
});
// common collection for all users:
userRepos.fetch({username: 'ANOTHER_USER'});
Branches API has a
// An empty Backbone.Collection
var Branches = repoItem.getBranches(),
// or
Branches = github.getBranches('USER_NAME', 'REPO_NAME');
// How to get branch:
branchItem = Branches.getBranch('BRANCH_NAME');
branchItem.fetch();
There is a raw tree implementation
// An empty Backbone.Collection
var tree = branchItem.getTree(); // required fetched branch item
tree.fetch({recursive:false}); // extract root
// Lazy load of sub-tree
tree.loadSubTree(treeItem); // load sub tree for of the concreate model
Content cache uses for loading content from GitHub and keep it in cache and finally commit it:
var contentCache = branchItem.getContentCache();
// return Backbone.Model
contentCache.loadContent({sha:sha, path:path}); // load content by SHA or PATH