/GitSync

Distributed Git over Named Data Networking

Primary LanguagePython

Dependencies

  • Git
  • MongoDB
  • ndn-cxx
  • NFD
  • PyNDN2
  • pymongo

Overview

GitSync contains 3 components: GitSync server deamon gitsync-daemon, Git remote helper git-remote-ndn and GitSync CLI client gitsync.

The server daemon is a daemon that runs background, managing repos and syncing up branches.

The remote helper is a middleware between git and gitsync-daemon. It receives push and pull commands from git, completes these requests by sending command Interests to gitsync-daemon and reports the result to git.

The CLI client provides an user interface to track a repo and create a branch.

Execution

This section shows an example on how to run GitSync locally.

# Start NFD
nfd-start

# Set multicast strategy
nfdc strategy set prefix /git strategy /localhost/nfd/strategy/multicast

# Start gitsync daemon with <command-prefix>
./gitsync-daemon <command-prefix>
# <command-prefix> is the prefix only used to send commands to this daemon

# Track a repo
./gitsync track-repo <repo-name>

# Create a branch with it custodian to be this node
./gitsync create-branch <repo-name> <branch-name>

# Add remote-url to local git repo
git remote add gitsync ndn::/git/<repo-name>

# Push local branch to daemon
git push gitsync <branch-name>

To connect to a different node, the only thing to do is configuring NFD.

nfdc face create udp://<other host>
nfdc route add /git <new-face>

# The following line is needed only when you want to push to a branch
# in the charge of that node
nfdc route add <new-node-command-prefix> <new-face>