threads / discuss / 15379

How can i write a new protocol for git

Subject: How can i write a new protocol for git

## tl;dr

5 messages between Sep 5, 2008 and Sep 8, 2008.

replies: 4people: 4as markdown or json

Sky Patrick· Sep 5, 2008, 09:22 UTC · lore
Hi,

If i want to write a new protocol for file transfer and would like to to integrate it with git. Is it possible and easy to integrate it ? Currently, i know that jgit may achieve it, but it is a Java implementation and may not work with git command line program that written in C.

Regards Patrick

Jakub Narebski· Sep 5, 2008, 09:38 UTC · re: Sky Patrick · lore

Re: How can i write a new protocol for git

"Sky Patrick" <patricksky852@gmail.com> writes:
Show 5 quoted lines
> If i want to write a new protocol for file transfer and would like to
> to integrate it with git. Is it possible and easy to integrate it ?
> Currently, i know that jgit may achieve it, but it is a Java
> implementation and may not work with git command line program that
> written in C.

What is exactly what you want to achieve? From the above it is not clear if you want to add support for new protocol in git (like amazon-s3 support in JGit, or currently in the works smart HTTP transport (HTTP POST)), or perhaps you want some separate application using some unknown file transfer protocol to somehow integrate with git; but what this integration is to be?

-- 
Jakub Narebski
Poland
ShadeHawk on #git
Mike Hommey· Sep 5, 2008, 09:47 UTC · re: Sky Patrick · lore

Re: How can i write a new protocol for git

On Fri, Sep 05, 2008 at 05:22:57PM +0800, Sky Patrick wrote:
Show 7 quoted lines
> Hi,
> 
> If i want to write a new protocol for file transfer and would like to
> to integrate it with git. Is it possible and easy to integrate it ?
> Currently, i know that jgit may achieve it, but it is a Java
> implementation and may not work with git command line program that
> written in C.

First, it would depend if you need this new protocol to be a dumb protocol (like rsync and http) or "native" (git or ssh).

I've been meaning to refactor the dumb protocol "stack" for a while, but haven't gone much further than ideas in my mind (i.e. no code). I also have some start of http code recfactoring, that is waiting for this dumb protocol rework to be completed.

Mike
Shawn O. Pearce· Sep 5, 2008, 14:52 UTC · re: Mike Hommey · lore

Re: How can i write a new protocol for git

Mike Hommey <mh@glandium.org> wrote:
Show 7 quoted lines
> On Fri, Sep 05, 2008 at 05:22:57PM +0800, Sky Patrick wrote:
> > 
> > If i want to write a new protocol for file transfer and would like to
> > to integrate it with git. Is it possible and easy to integrate it ?
> > Currently, i know that jgit may achieve it, but it is a Java
> > implementation and may not work with git command line program that
> > written in C.
Writing a dumb protocol support isn't difficult in JGit due to the
abstractions in place.  Its a little harder in C Git, unless Mike
(or someone else) can abstract out the cURL library usage and make
it more flexible.  Though these days cURL supports just about any
file transfer protocol known.
 
> First, it would depend if you need this new protocol to be a dumb
> protocol (like rsync and http) or "native" (git or ssh).

Writing a smart protocol is a PITA. Look at the smart HTTP effort I am trying to do. OK, I'm not spending a whole lot of time on it, but its a damn difficult thing to do well, and to keep simple enough that it can be described and reimplemented. Otherwise we have another that-thing-before-Git on our hands.

> I've been meaning to refactor the dumb protocol "stack" for a while, but
> haven't gone much further than ideas in my mind (i.e. no code). I also
> have some start of http code recfactoring, that is waiting for this dumb
> protocol rework to be completed.

Yea. One reason why I'm doing the smart HTTP effort prototype in JGit is because the C code structure makes this harder to implement without first going through a number of refactorings. Though for the smart HTTP stuff I really need to refactor fetch-pack/send-pack and upload-pack/receive-pack, not the dumb walkers.

-- 
Shawn.
Sky Patrick· Sep 8, 2008, 02:32 UTC · re: Shawn O. Pearce · lore

Re: How can i write a new protocol for git

Hi,

The new protocol i mean is the network transfer protocol, like rsync. Is the word "dumb protocol" you mean is the network transfer protocol ? But seem if i just implement a new protocol using jgit but not in C (integrate with git core code), it may not worth because more of the client using git core command line tool as git client.

Thank you ~

Regards, Patrick

On Fri, Sep 5, 2008 at 10:52 PM, Shawn O. Pearce <spearce@spearce.org> wrote:
Show 38 quoted lines
> Mike Hommey <mh@glandium.org> wrote:
>> On Fri, Sep 05, 2008 at 05:22:57PM +0800, Sky Patrick wrote:
>> >
>> > If i want to write a new protocol for file transfer and would like to
>> > to integrate it with git. Is it possible and easy to integrate it ?
>> > Currently, i know that jgit may achieve it, but it is a Java
>> > implementation and may not work with git command line program that
>> > written in C.
>
> Writing a dumb protocol support isn't difficult in JGit due to the
> abstractions in place.  Its a little harder in C Git, unless Mike
> (or someone else) can abstract out the cURL library usage and make
> it more flexible.  Though these days cURL supports just about any
> file transfer protocol known.
>
>> First, it would depend if you need this new protocol to be a dumb
>> protocol (like rsync and http) or "native" (git or ssh).
>
> Writing a smart protocol is a PITA.  Look at the smart HTTP effort
> I am trying to do.  OK, I'm not spending a whole lot of time on
> it, but its a damn difficult thing to do well, and to keep simple
> enough that it can be described and reimplemented.  Otherwise we
> have another that-thing-before-Git on our hands.
>
>> I've been meaning to refactor the dumb protocol "stack" for a while, but
>> haven't gone much further than ideas in my mind (i.e. no code). I also
>> have some start of http code recfactoring, that is waiting for this dumb
>> protocol rework to be completed.
>
> Yea.  One reason why I'm doing the smart HTTP effort prototype in
> JGit is because the C code structure makes this harder to implement
> without first going through a number of refactorings.  Though for the
> smart HTTP stuff I really need to refactor fetch-pack/send-pack and
> upload-pack/receive-pack, not the dumb walkers.
>
> --
> Shawn.
>

← back to recent threads