You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

6.0 KiB

gopm

总体设计目标

  1. 支持go语言的版本管理
  2. 支持文档管理
  3. 支持本地源服务器
  4. 本地源服务器同时支持公共包和私有包
  5. 支持依赖管理
  6. 支持从github, code.google.com, gitLab, 等常见的源码托管服务下载

最终程序只有一个,但是通过配置,可以有三种模式:

1 独立服务器 2 子服务器 3 客户端(默认)

独立服务器

独立服务器就是本身的包都是直接从源服务器中获取的。

子服务器

子服务器就是包是从所配置的独立服务器上获取的,而不是直接从github等源服务器获取,在一个局域网中,可以通过架设子服务器来加快包的分发。

客户端

默认下载即为客户端模式,客户端默认是从源服务器获取包,如果要从包服务器获取包,则可在配置文件中通过配置即可。

#Go包版本说明

版本分为四种:

  • []: 表示的是当前最新版本即trunk
  • branch: 表示的是某个分支
  • tag: 表示的是某个tag
  • commit: 表示的是某个reversion

#配置文件说明

默认没有配置文件,当系统第一次启动时检测homedir/.gopm/config,看是否存在,如果不存在则自动创建此配置文件。 配置文件内容如下: [sources] http://gopm.io

[repos] ~/.gopm/repos

#数据库说明 包信息数据采用goleveldb,这是一个key/value数据库。数据库存默认放在~/.gopm/repos下。数据存放规则如下:

  • "lastId" : "{lastId}" lastId中存放最大的Id,Id为自增

  • "index:{packageName}": "{id}" index:中存放的是包名,value中存放的是这个包的不同版本的id,不同版本用逗号分隔

  • “pkg:{id}” : "{pkg}" 某个包的名称

  • “ver:{id}” : "{verString1}, {verString2}" 某个包版本对应的内容

  • "desc:{id}" : "{desc}" 某个包的最新版本的描述

  • "down:{id}" : "{down}" 某个包的下载url

  • "deps:{id}" : "{deps}" 某个包的最新版本的描述

  • “key:{keyword}:{id}” : "" 关键词及其对应的版本

  • “total” :"{total}" 包总数

#各命令的目标和作用

###gopm help

显示当前可用的命令,以下命令中,[]表示可选,{}表示是参数

###gopm sources [add|rm [{url}]]

  • [] 列出当前可用的所有源,默认为http://gopm.io/
  • add url 添加一个源到本地
  • rm url 删除一个源到本地,如果没有任何源,则自己成为一个独立的服务器,类似gopm.io

###gopm list [{packagename}[:{version}]]

  • [] 列出所有本地的包
  • packagename 显示指定名称的包的详细信息

###gopm get [-u] [{packagename}[:{version}]] [-f {gopmfile}]

  • [] 查找当前目录下的所有.gopmfile文件,根据文件的描述下载所有的包
  • packagename 从源中下载某个包
  • -u packagename 从源中更新某个包
  • -f gopmfile 根据指定的文件来下载包

###gopm rm {packagename}[:{version}]

去除一个包,如果不加版本标示,则删除该包的所有版本

###gopm search [-e] {keyword}

根据关键词查找包名或者包的描述,如果有-e开关,则完全匹配包名

###gopm doc [-b] {packagename}[:{version}]

  • [] 显示一个包的文档
  • -b 在默认浏览器中显示该包的文档

###gopm serve [-p {port}]

将本地仓库作为服务对外提供,如果没有-p,则端口为80,如果有,则端口为指定端口,该服务是一个web服务,通过浏览器也可以进行浏览。

###gopm sync [-u]

[] 如果当前配置了源,则从可用的源中同步所有的包信息和包内容的最新版本到本地仓库; 如果当前没有配置任何源,则将所有已有的包从源头进行更新 -u 仅更新本地仓库已经有的包,不包含本地仓库没有的包

###gopm import [{url}|{filepath}]

将某个地址或者本地的包导入到本地仓库中,url应为可支持的源码托管站点或者gitLab

###gopm gen [{gopmfile}]

扫描当前目录下的go工程,并自动生成一个.gopmfile的文件依赖文档,如果未指定,则文件名为.gopmfile,如果指定了,则为指定的文件名

###gopm build [-u]

此命令依赖于go build

  1. 如果当前没有.gopmspec文件,则扫描当前的go工程的依赖,自动生成.gopmspec文档
  2. 根据.gopmspec文件自动下载所有需要的包,如果加了-u参数,则同时更新所有的包
  3. 根据.gopmspec文件自动切换gopath中的相关版本
  4. 调用go build对工程进行编译

###gopm run [{gofile}]

此命令依赖于go run

调用gopm build在临时文件夹生成可执行文件,并设置程序当前目录为当前目录,并执行

###gopm test

此命令依赖于go test

调用gopm build在临时文件夹生成可执行的测试文件,并设置程序当前目录为当前目录,并执行

#gopmspec文件格式

.gopmspec文件的格式类似一个ini文件,当前分为两个section。 build段内的依赖保存的是go build所需要依赖的所有包,一行一个,可用 =, >=等等,如果什么符号都没有,就是取最新版本

[build]
xweb
beego = tag:0.1
xorm >= branch:0.2

[test]
testing