git提交patch

本文介绍了如何在Docker社区提交patch,包括fork仓库、创建分支、修改代码、测试、提交和推送。详细讲解了使用dockercore/docker镜像进行单元和集成测试,以及gofmt代码格式化和git操作流程。

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>

 

 


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值