Hi Bill,

On Saturday 03 September 2011, Bill Pringlemeir wrote:
> I have been grappling with git for some time. People keep saying
> that it has different 'models', but I could never find any sort of
> discussion of what these models are [a high level overview].

What these people mean by "models" is the different organizational ways 
in which new code changes propagate from the original developer to the 
other developers and eventually into the product. These models are 
usually named after structures from graph theory.

With centralized systems like CVS or SVN, the flow of changes is always a 
star: Everyone pulls from and pushes to a single central repository. You 
can do that with Git, but you don't have to.

The Linux kernel, for example, is developed using an organizational 
model that is tree-shaped: Hundreds or thousands of developers 
contribute small changes. These changes are pulled by integrators who 
are experts in the field that is touched by each particular patch. After 
the experts collected these changes, the changes are pulled by one of a 
few high-level subsystem maintainers who have an interest in the patches 
of their particular field. In the end, Linus Torvalds pulls from these 
subsystem maintainers and everyone updates their code from Linus.

Other models are thinkable, for example a completely deregulated bazaar 
without any layers or stable directions, where everyone pulls those 
patches that seem useful at any given moment.

These models are not only about code flow. They are also models for a 
network of trust. You have to trust another person if you incorporate 
their code. With SVN, you need something like "write access" to the 
central repository to agree on a set of persons that everone must trust 
equally. With their tree model, on the other hand, Linus Torvalds only 
has to trust those few people he pulls from. He trusts them to choose 
only sources _they_ trust. There is no such thing as "write access".

> Anyways, there are many new/foreign commands with git, but I think
> the 'rebase' concept is an important new tool.

Rebasing means automatically rewriting the latest part of your commit 
history so that it is based on a different parent commit. This is 
necessary to avoid conflicts when you pull from an integrator who changed 
your commits, and it is also a nice tool to make your history look 
cleaner before you share it. But is has not that much to do with 
Raphael's particular problem.

Bye,
Hauke

------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
gtk-gnutella-devel mailing list
gtk-gnutella-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to