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>

 

 


Git 网站(如 GitHub、GitLab 或 Gerrit 等平台)上提交 patch 的方式略有不同,但基本流程围绕创建分支、提交更改、生成 patch 文件或推送更改并发起合并请求展开。以下是通用的提交 patch 的方法: ### 提交 patch 的常见方式 1. **基于命令行的 patch 提交流程** - 首先确保本地分支是最新的: ```bash git checkout master git pull origin master ``` - 创建新分支进行更改: ```bash git checkout -b feature-branch ``` - 修改代码并提交更改: ```bash git add . git commit -m "Apply patch for issue #123" ``` - 推送分支到远程仓库并创建 Pull Request(PR)或 Merge Request(MR): ```bash git push origin feature-branch ``` - 登录 Git 网站,打开对应的仓库页面,点击“Compare & pull request”按钮,填写描述并提交 PR。维护者会审核并决定是否合并该 patch [^4]。 2. **通过网页界面直接提交 patch** 某些平台(如 GitHub)支持在网页端直接编辑文件并提交 patch。操作步骤如下: - 打开目标仓库,导航到需要修改的文件。 - 点击编辑按钮(通常是一个铅笔图标),在线修改文件内容。 - 在下方的提交信息框中填写 commit message。 - 点击“Propose change”按钮,系统会自动创建一个新的分支并提示你创建 Pull Request。 3. **使用 `git format-patch` 邮件提交 patch** 在一些项目中(如 Linux 内核或 Apache 项目),开发者通过邮件提交 patch。具体步骤如下: - 生成 patch 文件: ```bash git format-patch origin/master ``` - 使用邮件客户端发送 patch 文件到项目维护者的邮箱,邮件内容需包含清晰的修改说明。 - 维护者收到邮件后,可能会将 patch 应用到主分支中。 4. **Gerrit 平台的 patch 提交流程** - 提交 patch 到 Gerrit 之前,确保已经配置好 SSH 密钥 Git 仓库的 remote 地址。 - 提交更改到 Gerrit 的特定分支(如 `refs/for/master`): ```bash git push origin HEAD:refs/for/master ``` - 登录 Gerrit 网站查看提交patch,等待评审通过后即可合并。 5. **注意事项** -提交 patch 前,确保你的更改不会破坏现有构建或测试流程 [^4]。 - 如果在 Git 的“脱离状态”(detached HEAD)下操作,可能会导致无法正确获取远程 patch set,从而引发依赖错误。建议切换到目标分支后再进行提交操作 [^1]。 - 如果多个 patch 之间存在依赖关系,务必确保它们的提交顺序正确,避免出现循环依赖或版本不一致的问题。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值