Git Over Freenet

Git Over Freenet

The code need some more cleanups, so it is not ready for apply (yet). It will be rebased / reorganized from time to time, until it is merged upstream.

0. Download

You may download the shell-archive executable (as generated by here . This is a JAR file, prepadded with a shell script. After chmod 755 jgit, it should be usable in any linux system with java installed.

The full source is only aviliable on github , or in the git repository. See page footer for the repository address.

1. Usage Example

1.1 Push (using jgit)

$ echo "publicKey=USK@VoFcfs8Y3VQfwD66ZgXAb4HBiS~WJe8w9mOy2hS9Mh8,OS6~bhX8LHxMLw-sruBkWDeACo-fg4yBZqueMPVj1Uc,AQACAAE/"  > .git/egit-freenet
$ echo "privateKey=USK@.........,AQECAAE/"  >> .git/egit-freenet
$ git remote add fcp freenet://egit-freenet/egit-freenet.git/0/
$ ./jgit push fcp master

1.2 Push (using jSite, for "seeding" only)

  1. Create a bare repository for your code
  2. git update-server-info
  3. Use jSite to upload your repositoty to USK@[.....]/egit-freenet.git/0/

1.3 Cloning

$ ./jgit clone freenet://USK@VoFcfs8Y3VQfwD66ZgXAb4HBiS~WJe8w9mOy2hS9Mh8,OS6~bhX8LHxMLw-sruBkWDeACo-fg4yBZqueMPVj1Uc,AQACAAE/egit-freenet.git/6/
$ echo "publicKey=USK@VoFcfs8Y3VQfwD66ZgXAb4HBiS~WJe8w9mOy2hS9Mh8,OS6~bhX8LHxMLw-sruBkWDeACo-fg4yBZqueMPVj1Uc,AQACAAE/" > ~/egit-freenet
$ ./jgit clone freenet://egit-freenet/test.git

1.3 Fetching

$ echo "publicKey=USK@VoFcfs8Y3VQfwD66ZgXAb4HBiS~WJe8w9mOy2hS9Mh8,OS6~bhX8LHxMLw-sruBkWDeACo-fg4yBZqueMPVj1Uc,AQACAAE/" > .git/egit-freenet
$ git remote add fcp freenet://egit-freenet/egit-freenet.git/0/ $ ./jgit push fcp master:master

1.4 Other

Fetching from fproxy using git should also work, but it is not tested. Try this:
git clone 'http://localhost:8888/?type=text/plain&max-size=2147483647&key=USK@VoFcfs8Y3VQfwD66ZgXAb4HBiS~WJe8w9mOy2hS9Mh8,OS6~bhX8LHxMLw-sruBkWDeACo-fg4yBZqueMPVj1Uc,AQACAAE/egit-freenet.git/6/' egit-freenet

2. Internals

1.1 File List

To support updateing / re-inserting the git repository as archive, egit-freenet keep a file list (named .JGIT-FREENET-FILELIST) internatlly. The format is:

# File List
^SSK@[...],AQACAAE/egit-freenet.git-5/                                                  (1)
objects/pack/pack-[...].idx     SSK@[..]/egit-freenet.git-7/objects/pack/pack-[...].idx   (2)
objects/pack/pack-[...].pack    CHK@[..],AAIA--8
info/refs       *
objects/info/packs      *                  (4)
refs/heads/master       *
(1) Base Archive
(2) File List
(3) Current Files

A. Contact Infomation

Git Repository: git://
Freesite: freenet:USK@VoFcfs8Y3VQfwD66ZgXAb4HBiS~WJe8w9mOy2hS9Mh8,OS6~bhX8LHxMLw-sruBkWDeACo-fg4yBZqueMPVj1Uc,AQACAAE/egit-freenet/-1/
PGP Key sec 1024D/75494252
Freemail: sdiz@sdiz.freemail