Manul 是 Go 应用的 vendoring utility。
为什么需要 Manul ?
因为其他的 vendor utilities 有以下缺点:
有些会对 go 的二进制文件和 GOPATH env 变量进行欺骗包装。你将得到一个非 go-gettable 项目,需要额外的软件来编译和运行;
有些将依赖关系的源代码复制到供应商目录中:更新依赖关系需要手动干预,并将大量修改的行直接提交到主仓库;不能通过查看仓库来告诉你的项目使用的依赖关系的版本; 必须在与提交相关联的供应商的附加模糊文件中保留版本。
还有各种架构问题:
不能更新所有或特定的依赖关系; 不能将特定版本的被依赖关系回滚; 不能删除未使用的被依赖关系; 不能锁定版本的 vendored 依赖。
用法
-I [<dependency>...] -为指定的/所有依赖关系安装git子模块;
-I [<dependency>...]
-U [<dependency>...] - 更新指定的/所有已经被提供的依赖;
-U [<dependency>...]
-R [<dependency>...] - 删除指定/所有依赖关系的git子模块;
-R [<dependency>...]
-Q [<dependency>...] - 列出所有使用的依赖关系;
-Q [<dependency>...]
-C - 检测并删除所有git子模块。
-C
安装
git clone --branch pkg-debian git://github.com/kovetskiy/manul /tmp/manul cd /tmp/manul ./build.sh dpkg -i *.deb
从 AIR 安装,或手动构建软件包:
git clone --branch pkg-archlinux git://github.com/kovetskiy/manul /tmp/manul cd /tmp/manul makepkg pacman -U *.xz
使用 go get 也可获得:
go get
go get github.com/kovetskiy/manul