Docker社区提patch
1. 登录docker社区,fork你要贡献的repository到你的账户中。并下载代码到本地。
2. $ git checkout -b [name] 创建一个分支,并切换到新的分支。
例如:$ gitcheckout –b dev
$ git branch 查看目前分支。
3. 修改文件。修改之后要搭建环境进行测试。
首先下载一个用于开发的Docker镜像,这里推荐使用dockercore/docker镜像,这个镜像就是Docker官方通过Jenkins运行自动化测试时使用的镜像。它是由Docker官方负责维护的,如果Docker编译环境发生变化,这个镜像也会在第一时间适配新的变化。
$ docker pull dockercore/docker
进入Docker项目目录并启动一个基于dockercore/docker镜像的容器。
$ cd docker && docker run --privileged --rm -ti -v `pwd`:/go/src/github.com/docker/dockerdockercore/docker /bin/bash
使用hack/make.sh脚本启动单元测试。
root@97006551cf20:/go/src/github.com/docker/docker# hack/make.sh dynbinarybinary test-unit
使用hack/make.sh脚本启动集成测试。
root@97006551cf20:/go/src/github.com/docker/docker# hack/make.sh dynbinarybinary test-integration-cli
使用以上命令可以在容器中运行相对的测试用例,通过这种方式在不必重新启动容器的条件下即可完成测试。
如果只想验证自己添加的测试用例是否能通过,可以再启动容器室设置TESTFLAGS环境变量为TESTFLAGS='-check.fYOUR_TEST_CASE'。例如,如果只想测试docker_cli_run_test.go中的测试用例TestRunEchoStdoutWithCPUQuota,则执行以下命令行:
$ TESTFLAGS='-check.f TestRunEchoStdoutWithCPUQuota' maketest-integration-cli
也可以在Docker开发容器内跑相同的测试:
# TESTFLAGS='-check.f TestRunEchoStdoutWithCPUQuota'./hack/make.sh binary test-integration-cli
可以使用TESTFLAGS环境变量来运行多个测试用例。例如,如果只想跑测试用例名以“TestBuild”开头的用例,可以执行以下命令。
$ TESTFLAGS='-check.f TestBuild*' make test-integration-cli
也可以在Docker开发容器内跑相同的测试:
# TESTFLAGS='-check.f TestBuild*' hack/make.sh binarytest-integration-cli
4. $ git diff 查看你对文件进行的修改
5. 要记得gofmt 你所修改的文件
$ gofmt -s -w [filename]
gofmt命令会按照Go语言代码规范格式化指定代码包中的所有Go语言源码文件的代码。
表0-13 gofmt命令的标记说明
标记名称 | 标记描述 |
-cpuprofile | 把CPU概要写入指定文件。文件的路径应该作为此标记的值。 |
-d | 显示格式化前后的不同(如果有的话),而不是直接格式化那些代码。 |
-e | 报告目标源码文件中的所有错误。默认情况下,仅会显示前10个错误。 |
-l | 仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。而不是把改写后的全部内容都打印到标准输出。 |
-r | 添加形如“a[b:len(a)] -> a[b:]”的重写规则。如果我们需要自定义某些额外的格式化规则,就需要用到它。规则字符串应该作为此标记的值。 |
-s | 简化文件中的代码。 |
-w | 把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。 |
6. $ git add [filename]
$ git commit [filename]
$ git push –f origindev:docker 表示从本地的dev分支传送到远程仓库的docker分支
7. 在docker社区自己账户中即可看到提交的文件,检查无误,pull request即可。
注意:
1. 若是从已经fork到自己账户的git库中下载代码到本地,则在git push时可以直接用选择origin;
若是从原git库下载代码到本地,则要先添加自己的远程仓库,并且在git push时选择自己的远程库:
eg:
git remote –v 查看现有的远程仓库
git remote add echo https://github.com/echo33/docker.git
git push –f echo dev:docker
2. 此次提交成功后,若要提交第二个无关联的patch,则在本地要另外新建一个branch,注意要先从当前分支转换到master上再新建。同样,远程仓库也要对应新建分支。
$ git branch 查看分支
$ git checkout master 转换到master上
$ git checkout –b dev2 创建dev2分支
$ git push origin dev2:docker2
3. 若想要对pull-request的代码做修改,不需要关闭然后再重新开启一个,进入本地的分支,修改文件,再上传到远程相应的分支即可:
$ git commit –a –amend
$ git push –f origin <branch name>
本文介绍了如何在Docker社区提交patch,包括fork仓库、创建分支、修改代码、测试、提交和推送。详细讲解了使用dockercore/docker镜像进行单元和集成测试,以及gofmt代码格式化和git操作流程。
810

被折叠的 条评论
为什么被折叠?



