git-vendor ========== A git command for managing vendored dependencies. `git-vendor` is a wrapper around `git-subtree` commands for checking out and updating vendored dependencies. By default `git-vendor` conforms to the pattern used for vendoring golang dependencies: * Dependencies are stored under `vendor/` directory in the repo. * Dependencies are stored under the fully qualified project path. * e.g. `https://github.com/brettlangdon/forge` will be stored under `vendor/github.com/brettlangdon/forge`. ## Usage See https://brettlangdon.github.io/git-vendor for the current MAN page documentation. `git-vendor` provides the following commands: * `git vendor add [--prefix ] []` - add a new vendored dependency. * `git vendor list []` - list current vendored dependencies, their source, and current vendored ref. * `git vendor update []` - update a vendored dependency. * `git vendor upstream [] [--repo ]` - share with the upstream vendored dependency. ## Installation Manually: ```bash git clone https://github.com/brettlangdon/git-vendor cd ./git-vendor make ``` One-liner: ```bash curl -sSL https://git.io/vzN5m | sudo bash /dev/stdin ``` [Homebrew](http://brew.sh) (thanks to @liamstask): ```bash brew install git-vendor ``` ## Example ```bash $ # Checkout github.com/brettlangdon/forge@v0.1.6 under vendor/github.com/brettlangdon/forge $ git vendor add forge https://github.com/brettlangdon/forge v0.1.6 + git subtree add --prefix vendor/github.com/brettlangdon/forge --message 'Add "forge" from "https://github.com/brettlangdon/forge@v0.1.6" git-vendor-name: forge git-vendor-dir: vendor/github.com/brettlangdon/forge git-vendor-repository: https://github.com/brettlangdon/forge git-vendor-ref: v0.1.6 ' https://github.com/brettlangdon/forge v0.1.6 --squash git fetch https://github.com/brettlangdon/forge v0.1.6 warning: no common commits remote: Counting objects: 405, done. remote: Total 405 (delta 0), reused 0 (delta 0), pack-reused 404 Receiving objects: 100% (405/405), 68.31 KiB | 0 bytes/s, done. Resolving deltas: 100% (227/227), done. From https://github.com/brettlangdon/forge * tag v0.1.6 -> FETCH_HEAD Added dir 'vendor/github.com/brettlangdon/forge' $ # List current vendored dependencies $ git vendor list forge@v0.1.6: name: forge dir: vendor/github.com/brettlangdon/forge repo: https://github.com/brettlangdon/forge ref: v0.1.6 commit: 3335840c5f0ad9e821006588f1b16a3385d9c318 $ # Update existing dependency to a newer version $ git vendor update forge v0.1.7 From https://github.com/brettlangdon/forge * tag v0.1.7 -> FETCH_HEAD Merge made by the 'recursive' strategy. vendor/github.com/brettlangdon/forge/forge_test.go | 2 ++ vendor/github.com/brettlangdon/forge/scanner.go | 4 ++++ vendor/github.com/brettlangdon/forge/test.cfg | 1 + 3 files changed, 7 insertions(+) $ # List current vendored dependencies $ git vendor list forge@v0.1.7: name: forge dir: vendor/github.com/brettlangdon/forge repo: https://github.com/brettlangdon/forge ref: v0.1.7 commit: 071c5f108e0af39bf67a87fc766ea9bfb72b9ee7 ```