GitHub项目创建管理笔记

pull requests 与 merge


如果你想对他人的仓库代码有所贡献,首先你需要fork别人的仓库,随后将内容git clone到本地进行修改。以上过程推荐在Github Desktop的辅助下进行,(即使你命令行能力很强,desktop都有着很好的便捷性)

image-20200520171045263

image-20200520171403086

image-20200520171459828

通过上面三张图所展示的步骤,就完成了准备阶段。此时你就可以在本地直接对项目进行修改,你所对此项目做出的增删改都会被github desktop记录,位置如下图:

image-20200520172605812

当你确认你所有的修改都是符合你的意图的之后就可以点击commit,输入summary,description (summary是你对这次代码修改内容的一个概括性标题,description是详细描述,这些都是为了方便代码原有者最快了解你的修改意图)

image-20200520172953739

image-20200520173204934

随后你就可以去浏览器上输入你刚刚fork之后生成的仓库地址,这时候就可以看到页面上有一个pull requests和compare,前者是把当前的改变提交给源仓库,后者是方便你再提交前再次确认一下你的改动内容。点击pull request之后,在跳转的页面再点击 create pull requests,之后整个过程就完成了。

image-20200520173825422

image-20200520173900005

当然,这部分只是你这里完成了。源仓库持有者会审核你的这次commit,在审核完毕后,会手动同意并merge,你的贡献就达到了。

但是要注意,目前很多大型开源项目在接受pull requests前会先使用自动化的代码检测工具对你的这次代码改动进行检测,内容大概是:针对你的代码是否可执行,格式是否规范等等,只有全部测试成功,源仓库持有者才会手动同意你的这次代码贡献。(所以一定要看清源仓库提交代码贡献前要满足的条件)

image-20200520174432113

Rich the Project Index


自己的项目仓库成功创建之后,就需要好好充实一下README.md,所以markdown的排版美感一定要掌握。同时一些认证的badge也可以让你的源项目看起来更正式,同时这些badge背后的工具也可以让你发现代码里的不足。

你可以在这里explore你想要的工具。下面介绍些常用的工具和使用方法

0. Create your own badge

有一些badge是需要你自己创造的,比如你当前项目的语言依赖性,这个只有你自己比较清楚,所以这个时候就要去shield.io上自己生成svg文件,随后拿到markdown链接,放在README.md里。

image-20200520201018369

打开网页后找到此处,输入你想DIY的信息,例如我想声明该项目build with python3.5,那么就可以如下设置:

image-20200520201043051

之后再点击Make Badge,生成效果如图image-20200520201129814。最后一步,复制地址栏中的url,复制到README.md里,done!(按理说url应该以.svg结尾,但是chrome最新版里我看不到svg字段,不知道是浏览器的原因还是它本身生成的url就不自带.svg后缀了,如果没有.svg,记得复制url后加上.svg,这样才可以正确显示)

1. Travis-CI

Travis CI 提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。

持续集成指的是只要代码有变更,就自动运行构建和测试,反馈运行结果。确保符合预期以后,再将新代码”集成”到主干。

持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。

Python项目为例,当你的项目创建仓库成功后,登入travis-ci,关联你github账号,随后你就在travis-ci可以浏览到自己github里的仓库列表,而此时任何CI-task都不会生效的,因为你还需要在你的项目中添加一个 .travis.yml 文件,其具体编写格式详见此处

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
language: python
python:
- "2.7"
- "3.4"
- "3.5"
- "3.6" # current default Python on Travis CI
- "3.7"
- "3.8"
- "3.8-dev" # 3.8 development branch
- "nightly" # nightly build
# command to install dependencies
install:
- pip install -r requirements.txt
# command to run tests
script:
- pytest

以上面的模板为例,通过k:v的方式就能很直白的读懂这个模板yml文件,language指定当前项目语言,之后再根据当前项目的语言类型选择它所要进行测试的版本号,随后的install则是安装一些必须的库依赖。script则是你执行这个项目的命令代码。

2. Codecov

它是负责你集成测试你的代码覆盖率的工具,常常与CI与code coverage配合使用,大致流程就是使用code coverage类的测试工具生成report,由codecov命令找到你这个report显示到它那里。

以codecov与上面的travis-ci相配合为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
language: python
python:
- "3.5"
# command to install dependencies
install:
- pip install -r requirements.txt
- pip install coverage
- pip install codecov
# command to run tests
script: python3 Main.py
after_success:
- coverage run Main.py
- codecov

注意这里的after_success,它的功能是在上面的script执行成功之后,才做出的一系列命令操作。可以看到首先用coverage run 执行我的主程序,这条命令结束之后,coverage report也就生成了,随后再使用codecov命令。通过上述操作,就可以codecov网站里找到对应的项目代码覆盖率信息报告,而此时你也可以在这个报告页面拿到你想要的badge。

3. CodeFactor

代码结构分析,它会根据你的代码规范性来给出适当的评价。操作简单,无需多言,只要将它与github账户绑定,授权库的访问,就可以点击库列表中的某些库,分析出结果,随后拿到badge。

4. To be continued…….

…………….

⬆︎UP