Re: [RFC PATCH] Introduce git-hive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 31, 2010 at 11:29:02AM +1000, Nguyen Thai Ngoc Duy wrote:
> On Tue, Aug 31, 2010 at 7:17 AM, Luke Kenneth Casson Leighton
> <luke.leighton@xxxxxxxxx> wrote:
> > On Mon, Aug 30, 2010 at 8:59 PM,  <cdahlin@xxxxxxxxxx> wrote:
> >> From: Casey Dahlin <cdahlin@xxxxxxxxxx>
> >>
> >> This isn't really what I'd normally call ready for public consumption, but
> >> since there's been some minimal list chatter on a similar subject I figured I'd
> >> put this out there early.
> >>
> >> git-hive is a peer to peer service for exchanging branches. When started it
> >> runs a small daemon to publish your repository on a random (or specified) port.
> >> Two hive daemons connected to oneanother can exchange branch lists and
> >> introduce eachother to more hive daemons to widen the network.
> >
> >  p.s. is there any location where, in diagrammatic form, the
> > protocol's described?
> 
> Also a short tutorial how to use it would be nice.
> 
> I take it I can put different repositories (say wine.git and git.git)
> in the hive. When I fetch git.git from the hive, it won't fetch
> wine.git?

First step to using hive is to set the project uri for your repo (may change
this to a different mechanism later).

	casey@host_a$ git config --add hive.uri http://myproject.org

This is what prevents the scenario you describe; repos with the same project
URI are assumed to be compatible. It can be given as a command line argument to
'git hive start', but this way is much more usable.

Next we start the service for our repo.

	casey@host_a$ git hive start --listen-port 21121

Normally the listen port is selected randomly. We specify it here so that other
hive users can explicitly connect to us and "bootstrap" themselves into the
hive network.

Now to have someone join.

	nguyen@host_b$ git config --add hive.uri http://myproject.org
	nguyen@host_b$ git hive start host_a.com:21121

So from host_b we specify host_a's address and listen port, and we join the
network. From here on out anyone who also connects to host_a will get host_b's
(randomly selected) listen port automatically and be able to connect to it as
well.

So now our two peers can see each other.

	casey@host_a$ git hive show --branches
	Nguyen Thai Ngoc Duy <pclouds@xxxxxxxxx>
		master
		for_casey
	
	---

	nguyen@host_b$ git hive show --branches
	Casey Dahlin <cdahlin@xxxxxxxxxx>
		master
		stable
		v2.1

And we can exchange them

	casey@host_a$ git hive fetch nguyen for_casey
	casey@host_a$ git branch
	* master
	  stable
	  for_casey

Note that the two arguments in fetch are a regex which searches through user
IDs and a branch name, which is why I can abbreviate to just "nguyen" in all
lower case.

--CJD
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]