> You would be surprised to know that gvt uses gb internally, 
 > and both the projects exchange pieces of code and ideas ;)

That's not the impression I get.  I might be wrong, but I believe that gvt 
does not share most of gb's philosophy:  1) It is based on just gb-vendor, not 
the rest of gb.  2) It uses Go's vendor directory without the top-level (single 
project) restriction, and in a manner which is compatible with the go tool (no 
vendor/src).  3) It uses the go tool, not the gb replacement tool.  4) It uses, 
rather than ignores, GOPATH.  5) It provides some support for versioning.

John

    John Souvestre - New Orleans LA

-----Original Message-----
From: golang-nuts@googlegroups.com [mailto:golang-nuts@googlegroups.com] On 
Behalf Of Mauro Toffanin
Sent: 2016 July 16, Sat 10:59
To: golang-nuts@googlegroups.com
Subject: Re: [go-nuts] What dependency management tool do you use?

On 16/07/16 15:16, Peter Mogensen wrote:
> * Use gvt for vendoring everything into /vendor

You would be surprised to know that gvt uses gb internally, and both the
projects exchange pieces of code and ideas ;)


> But wrt. to the talk above: Didn't Dave Cheney dismiss the diamond
> problem a little too fast? Sure you "cannot" do that, but you can still
> end up in a situation where you depend on 2 different libraries, each
> which depends on different specific version of the same 3rd package.

I actually agree with Cheney's decision:
http://dave.cheney.net/2015/06/09/gb-a-project-based-build-tool-for-the-go-programming-language

The probability of encountering a diamond dependency conflict is so low
that makes sense to treat it like a corner case and to force the final
user to manually take action; providing some boiler-plate solver will
never guarantee a valid consistent resolution for every single
conflicting case, leading only to an increased complexity� of the tool.

Automatically solving the diamond dependency conflict requires tampering
with the Golang source code anyway, which means we are back to the
square one with dirty work-arounds: with source code tampering you lose
the "reliable" and "reproducible" part of your builds.

One could argue that solving the diamond dependency in an automatic way
has benefits per se. I can understand the allure of that reasoning, but
it's not the Go way of doing things; it's like with Generics: some
people like them and want them, some others don't and prefer to stick to
manual implementation.

There isn't an easy answer to such problems.

�- you have to deal with graph theory, implement Breadth First and Depth
First algorithms, impose barriers and fences all over the PM; I
personally don't see the advantage considering its complexity vs the
little outcome. It's easier, and faster, to manually solve the conflict.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to