W dniu wtorek, 12 lipca 2016 22:15:29 UTC+2 użytkownik Johann Höchtl 
napisał:

> What do others use?
>

Where I work, we've evaluated what was available some year ago, but nothing 
fit our envisioned usecases. So we took our time, sit down and meticulously 
analyzed what we need, wrote design docs, argued over them hard, and 
finally wrote the code. Since then, we've never looked back, it just works 
for us, we don't even think about it as a problem anymore. We've even 
open-sourced it; but we didn't advertise, because we weren't at freedom to 
add the final, yet so important touch: of writing a proper readme... I find 
it extremely unfortunate and painful from point of view of this project, 
but internally we had to quickly shift our gears and really focus on much, 
much more important stuff - which still keeps us really busy.

But enough explaining myself; what I'd really like is to summarize pros & 
cons of the tool below, plus add some links for further reading for anyone 
interested:

Features:
- main command "vendo recreate" analyzes all .go files in your repo, across 
all build tags and platforms; then recursively analyzes all their external 
dependencies (now assuming only predeclared platforms and default build 
tags). Whole repos (because LICENSE & consistency) are copied into _vendor/ 
subdir (because `go test ./...` & `go build ./...`), registered in 
vendor.json (older version which still supported our approach) with 
revision ID and precise date (awesome in cases like code.google.com winding 
down and everyone going hg->git). Git, hg, bzr are supported as source 
repos (more can be easily added). Code from vendored repos is `git add`-ed 
automatically, ignoring .git/.hg/.bzr dirs; unused repos are detected and 
auto-removed.
- private patching is explicitly supported by design ("comment" field in 
vendor.json should be updated with patch description); though public forks 
are practically superior and more encouraged.
- `go get -u` functionality is supported via "vendo update". Selected 
upstream repos are cloned based on info in "vendor.json", then updated as 
expected.
- permissive BSD license (3-clause).

Limitations:
- does not currently use the "canonical" vendor/ directory structure, thus 
requiring: `GOPATH=$ROOT/_vendor:$GOPATH`. Reasons: mostly for ease of `go 
build ./...`, `go test ./...` etc; also vendor/ was not yet certain when we 
did it. TODO: support vendor/ and add some helper wrapper for ./... ?
- no README yet. Sorry :(
- uses older version of vendor.json specification (many changes were done 
later, while ignoring backwards compatibility, and we noticed them much too 
late);
- currently supports only git as the "master" VCS;
- we planned for some helpful `git commit`-time hooks, but didn't implement 
them yet; lack of them doesn't really hurt us enough that we could with 
straight face allocate some time for it; at least for the time being.

More details:
- the original use-cases design doc: 
https://github.com/zpas-lab/vendo/blob/master/use-cases.md
- example results:
  https://github.com/zpas-lab/vendo/blob/master/vendor.json
  https://github.com/zpas-lab/vendo/tree/master/_vendor
- the main repo: https://github.com/zpas-lab/vendo/

NOTE: If anyone has questions, you're very welcome, but *please* make sure 
my email is in CC. Unfortunately I don't have enough time now to check 
golang-nuts regularly :/

Best Regards,
/Mateusz Czapliński.

-- 
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