Actually, Jeff I appreciate a lot your work on mercurial. I know I could use the bookmarks extension to achieve a similar process with hg (never tried darcs and bzr seriously, sorry). but I still prefer git to mercurial, since it has been designed around the features that I like (when working alone) or need (when working in large team over years long projects).

But this is personal taste, and I'm not a git evangelist. I just replied to Charles asking for the features we use in git.

Btw, ever heard of http://libgit2.org ?
Plain c89. No external dependencies. 

In theory, one could implement a native gitfs over that, in C, using the network fs available in Plan9.

Compared to hgfs, a bit more design of the fs structure would probably be needed to capture the concept of branch in a hierarchical filesystem.

How much you would estimate such development?


Giacomo



2015-03-30 18:16 GMT+02:00 Jeff Sickel <jas@corpus-callosum.com>:

> On Mar 30, 2015, at 4:55 AM, Giacomo Tesio <giacomo@tesio.it> wrote:
>
> Ah, a small addendum: obviously we also use tags a lot to give a specific commit (and related history) a name.
> This is done automatically by build servers for the "official" tags, and manually by developers whenever they want in their own repository (often with tags like, "workedhere", "shittorefactortomorrow" and so on).

All of those features are available in hg, darcs, and other dscm tools.

But to get back on topic, unless I’ve overlooked a contrib package somewhere, how about we begin with the requirements to get a fully working git installed on Plan 9.  For example,

## the dependencies required for git on a bare-bones FreeBSD install:
# pkg install git
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 18 packages will be affected (of 0 checked):

New packages to be INSTALLED:
        git: 2.3.4
        expat: 2.1.0_2
        p5-Authen-SASL: 2.16_1
        p5-GSSAPI: 0.28_1
        perl5: 5.18.4_11
        p5-Digest-HMAC: 1.03_1
        p5-Net-SMTP-SSL: 1.01_3
        p5-IO-Socket-SSL: 2.012
        p5-Mozilla-CA: 20141217
        p5-Net-SSLeay: 1.68
        p5-Socket: 2.018
        p5-IO-Socket-IP: 0.37
        python27: 2.7.9
        libffi: 3.2.1
        p5-Error: 0.17023
        curl: 7.41.0
        ca_root_nss: 3.18
        cvsps: 2.1_1



I’m not sure what cvsps is for, that seems to have cropped up on the fbsd pkg sometime between git versions 2.3.1 and 2.3.4.  It’s been years^wdecades since I’ve tinkered with perl, and I’m fairly certain the perl 5.8 version available on Plan 9 won’t support the modules included in the above list.  So Plan 9 needs a modern perl to run git effectively with specific attention to the additional modules.  Expat is the “eXpat XML parser library”.  Libffi is something maintained on sources.redhat.com.  Many of those modules depend on OpenSSL, so add that to the list.  It’s also possible a recent port of bash will also be required as the git support scripts may not work with our ape/sh or ape/psh.  We’ve got python 2.7.8 [.9 soon] covered.

Piece of cake, all that should fit on a coaster.

-jas