Hacker News new | ask | show | jobs
by rcthompson 3222 days ago
I think it's a fallacy to say that just because Git allows a completely decentralized organizational structure, that not using one is somehow wrong. The beauty of git and any other DVCS is that it doesn't prescribe any specific organizational structure, so you're free to adopt any structure you like on it. And critically, you're free to change it when it makes sense to do so. I think the reality is that a centralized structure works best for most projects most of the time, but git has the flexibility to break out of that mold.

For example, maybe in one project most of the time everyone pushes and pulls from a centralized master and not to and from each other. But then two developers get together to try and solve a particularly troublesome bug. While they're doing this, they can push and pull directly from each other without worrying about master, and then once they're done, they can merge, clean up, etc., and then push the result to master. Git allows these kinds of pockets of decentralized development within an overall centralized workflow, and does so seamlessly.

Since Git allows any organizational structure, it's up to the people working on a project to choose what works best for them. That's a responsibility that they didn't have before DVCS, because only one structure was supported by the tools.

2 comments

I think your first point is really important and useful. You can work like a CVS when optimal, but drop into a distributed model when it makes sense. If the repo has an outage, you can make one computer at the office become remote for a day and push to that. There's a lot of flexibility that you get from starting with a DVCS.
But why won't they just work on a separate branch still sitting against the main git repo? So long as the internet is up it offers the same thing basically.
If they work at the same company, yes. It’s often (always) easier to use the central repo than to figure out connectivity or send patch files.

But if they’re in different companies, and there is no central repo visible/accessible for both devs, then yes the D in DVCS is definitely appreciated.

They could also do that. The point is that git just lets you do whatever creates the least friction.