Il giorno domenica 5 febbraio 2017 06:35:18 UTC+1, [email protected] ha
scritto:
>
> I can’t seem to converge on a decent package/version management scheme. I
> asked Dave Cheney, and he recommended that I email this list.
>
>
>
> I’ve written a Go project. I started with a directory tree like this:
>
>
> $GOPATH/src/project/objects/agent_v1/agent_v1.go (import
> “project/objects/agent_v1”)
> $GOPATH/src/project/objects/customer_v1/customer_v1.go (import
> “project/objects/customer_v1”) Etc.
>
>
>
> I know that I needed to be able to support different versions of my
> objects, so that is the directory structure I started using.
>
>
>
Is your project a package (for other developers to use) or an application?
> What I’m looking for: A solution that will:
>
> a) make builds reproducible.
>
If your project is a package, usually (IMHO) you should forget about making
builds reproducible.
This is responsibility of the develper that uses your package in his
project.
b) use SemVer 2.0.0 versioning.
>
You can just add tags or branches on your git repository following, as an
example, the convention proposed by Dave Cheney.
> [...]
> e) use the standard Go tooling as much as possible. Only use
> other tooling where the standard Go tooling won’t work for package/version
> management.
>
For web applications I use the layout proposed by Dave Cheney in db (but
this layout seems to be used by other projects, too).
I use gb build when building, since it is convenient, but I use standard go
tools for everything else, using this script named go+"
#!/bin/sh
# Execute the go tool for the current project.
# The project should have the layout as defined by the gb tool.
GOPATH="$PWD:$PWD/vendor" GOBIN="$PWD/bin" go $@
When importing dependencies I use gb vendor fetch, but for some cases I
just clone the repository inside vendor/src/.
If your project is a package you can import the dependency in a vendor
directory. There are some example in the Go standard library.
However you should be careful, since some packages can not be imported
multiple time (like the SQL drivers).
Manlio
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.