diff --git a/README.md b/README.md index ff16f2712484eaaca2a24a059f86cddd778f70b8..42817d9bf58a8c1bdbf0e2d52560ee6888ea2e2c 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,94 @@ openEuler-Advisor 的目标是为 openEuler 制品仓的日常工作提供自动 2. 对 simple-update-robot.py 做进一步的优化,提高自动化处理升级的能力。 3. 完善 upstream-info,覆盖 openEuler 制品仓中所有软件。并将分散中 openEuler 社区中的各个 YAML 统一到 upstream-info 中,便于后续统一管理。 4. 完善 oa_upgradable.py 支持的上游社区代码管理协议,当前发现还需要增加 fossil 的支持。 + + +#### ymal文件规范 + +###### version_control: + +可选为svn, git, hg, github, gnome, metacpan, pypi + +###### src_repo: + +1、 如果version_control为svn,那src_repo需要 完整的 SVN 仓库地址。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/amanda.yaml + +2、如果version_control为git,那src_repo需要 完整的 GIT 仓库地址。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/mdadm.yaml + +3、如果version_control为hg,那src_repo需要 完整的 HG 仓库地址。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/nginx.yaml + +4、如果version_control为github,那src_repo只需要 proj/repo 即可,不需要完整的URL。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/asciidoc.yaml + +5、 如果version_control为gnome,那src_repo只需要 $proj 即可,不需要完整的URL。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/gnome-terminal.yaml。 注意gitlab.gnome.org上很多项目需要访问权限,这些不能作为上游代码仓库。 + +6、如果version_control为metacpan,那src_repo只需要 $proj 即可,不需要完整的URL。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/perl-Authen-SASL.yaml。 注意在metacpan上的命名规范。 + +7、 如果version_control为pypi,那src_repo只需要 $proj 即可,不需要完整的URL。例子可以参考https://gitee.com/shinwell_hu/openEuler-Advisor/tree/next/upstream-info/python-apipkg。 注意pypi上的命名规范。 + +###### tag_prefix: + + 不同项目的tag规则不同,这里比如tag是v1.1的,那么tag_prefix设置为^v即可。有些软件的tag_prefix会比较复杂。 + +###### seperator: + +不同项目的tag中域分割不同,有些是"-",有些是"_",一般默认是".",建议加上双引号 + +###### 开源软件上游代码仓信息的验证方法 + +1)常见代码配置管理方法 + + git,svn,hg都可以在不下载完整代码仓的情况下获取代码仓的信息。方法如下: + +\- git: + + git ls-remote --tags $repo_url + +\- svn: + +​ svn ls -v $repo_url/tags + +\- hg: + +​ curl $repo_url/json-tags + +2)常见代码托管网站的使用方法 + +\- github + + curl https://api.github.com/repos/$user/$repo/release + + 可以获得json格式完整的release信息清单。但是不是所有项目都支持 + + curl https://api.github.com/repos/$user/$repo/tags + + 可以获得json格式完整的tag信息清单。但也不是所有项目都支持,并且已经发现有些项目的这个信息是错误的。 + +\- metacpan + + curl https://fastapi.metacpan.org/release/$repo + + 可以获得json格式的最新版本信息 + +\- pypi + + curl https://pypi.org/pypi/$repo/json + + 可以获得项目最新发布版本的信息 + +\- tag_prefix和tag_pattern的使用 + + 很多软件的tag信息设置是使用了前缀的,比如release-1.2.3,或者v1.2.3。 + + 设置了tag_prefix,就会把所有tag字符串中同样的前缀部分都删除。 + + 比如一个软件同时存在 1.2.3 和 release-1.2.2 两个tag,设置tag_prefix为release-,处理后的tag为1.2.3和1.2.2。 + + tag_pattern是为了更复杂的形态使用的,不推荐使用。 + +\- seperator 的使用 + + 设置seperator,可以简单的把这个字符替换成"."。 + + 有些软件的tag分域采用的不是".",这时候设置seperator就可以规范化版本tag。 + + 如果软件tag分域本来就是".",这个时候设置seperator是不影响结果的。 \ No newline at end of file