2.3 KiB
2.3 KiB
Managing dependencies
Go modules
Dex uses Go modules to manage its vendor directory. Go 1.11 or higher is recommended. While Go 1.12 is expected to finalize the Go modules feature, with Go 1.11 you should activate the Go modules feature before interacting with Go modules.
Here is one way to activate the Go modules feature with Go 1.11.
export GO111MODULE=on # manually active module mode
You should become familiar with module-aware go get as it can be used to add version-pinned dependencies out of band of the typical go mod tidy -v workflow.
Adding dependencies
To add a new dependency to dex or update an existing one:
- Make changes to dex's source code importing the new dependency.
- You have at least three options as to how to update
go.modto reflect the new dependency:
- Run
go mod tidy -v. This is a good option if you do not wish to immediately pin to a specific Semantic Version or commit. - Run, for example,
go get <package-name>@<commit-hash>. This is a good option when you want to immediately pin to a specific Semantic Version or commit. - Manually update
go.mod. If one of the two options above doesn't suit you, do this -- but very carefully.
- Create a git commit to reflect your code (not vendor) changes. See below for tips on composing commits.
- Once
go.moddescribes the desired state and you've create a commit for that change, runmake revendorto updatego.mod,go.sumandvendor. This callsgo mod tidy -v,go mod vendor -vandgo mod verify. - Create a git commit to reflect the changes made by
make revendor. Again, see below for tips on composing commits.
Composing commits
When composing commits make sure that updates to vendor are in a separate commit from the main changes. GitHub's UI makes commits with a large number of changes unreviewable.
Commit histories should look like the following:
connector/ldap: add a LDAP connector
vendor: revendor