从零开始为Web项目定制构建系统(二)——版本跟踪系统

342 阅读3分钟

git版本跟踪系统 可以理解为 build sys的子系统,类似于 测试子系统,因它们共用同一个系统工作目录;然而, git版本跟踪系统 比测试等「build子系统」更具独立性,因为它使用独立的工具或技术基础(git 独立于nodejs)和操作接口(git不使用npm script执行,不是构建任务的一项)。 不管怎样,版本跟踪任务 还是现代软件项目管理、构建、协作和分享的重要一环。在继续给我们的构建系统增加功能之前,先将为它添加版本跟踪系统(或者叫加入到项目管理之中)。

EM:「项目目录」是多个逻辑任务的宿主,版本管理,和软件构建是软件管理并行的两个任务。

设计大于系统,系统大于创建提交

对很多实践爱好者来说,最有价值的版本跟踪任务是创建和提交commit(git add / commit),还有与远程仓库推拉更新(git push/pull), 然而,这些日常版本跟踪任务的前置条件(git init)更具价值,例如整个「分布式版本跟踪系统」的原理知识;当然,还有比此二更具价值的知识,那就是具体的commit, branch, repo的版本设计;简单的说,「版本设计」就是有关一个commit里有怎样的版本增量数据,一个branch有怎样的commit历史 和一个repo应该有怎样的branch结构等设计策略。

#添加git 系统 OK,意义,和理论讲这么多。开始操作。 给我们的Web project(a-wgp) 添加git 系统分两步: 第一,创建repo; 第二,发布到github(我们未必一定需要远程协作,也未必选github,但是一般规模的项目都有远程协作的需求,所以创建分布式版本管理是很有必要);

从现有项目上创建repo

cd a-wgp git init ## 初始化一个repo,体现在创建一个隐性目录.git git add .	## 将项目所有文件添加到暂存区,构建第一个commit touch .gitignore && git add .gitignore ## 创建一个过滤配置,并添加到暂存区,加入跟踪 $ git commit ## 提交,并根据提示在vim编辑上输入commit描述

Start a new git repository kbroman.org/github_tuto…

添加了git系统的build sys 文件系统构成

[keminlau@localhost a-wgp]$ tree -a . ├── build ├── .git ├── .gitignore ├── package.json └── src ├── app.js └── index.html

发布到 github

我们现在在本地已经有了一个repo,将它发布到github的意思是说,将在 github 的服务器创建一个远程的repo,并将俩关联而 构建一个分布式版本跟踪系统。完成创建分布系统需要两个能力条件: 第一,掌握「git分布式系统」创建和配置的知识; 第二,掌握github的创建和推送repo的知识;包括「SSH系统」的配置的知识;

我们大概的任务步骤是,先在 github 上创建一个同名空repo,再在本地配置操作,将本地的repo数据“推”上远程repo,以此来完成分布式系统的创建。

创建一个同名空repo

• 转到 github 登录你的帐户 • 单击右上角的 new repository 按钮。你可以选择用一个 README 文件来初始化 repository • 填写项目信息 • 单击“Create repository”按钮

有了远程repo,接着要配置远程通信。github支持HTTPS和SSH两种登录(help.github.com/en/github/g… ,这里只使用了SSH,据说HTTPS更流行。 help.github.com/en/github/u…

配置本地SSH 登录客户端

要将本地数据传输上服务器,我们需要Secure Shell (SSH) 系统进行安全通信,这功能一般操作系统会默认安装。但可能需额外的配置。 「SSH系统」有多个工作模式,其中最流行是就使用密钥对验证登录,所以需配置SSH keys,其中私钥在本机,公钥在服务端;我们配置步骤有: 第一,先在本机生成(如果之前没有生成过)密钥对,并(可选)对私钥进行口令(passphrase)加密;

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Generating public/private rsa key pair. Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter] Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]

注:-C 参数不能随意,必须是你的github email数据

「密钥对」是对远程登录验证加密,而「私钥口令」则是对私钥本身加密,以防盗用。如果添加了私钥口令,则每次登录操作都输入口令,也可通过ssh-agent代劳(此任务待定,此处不使用私钥口令)。

第二,拷贝公钥数据,配置服务端;

配置远程(github)SSH 服务端

这个主要通过github界面,添加公钥数据

转到你的github帐户设置 点击左侧的“ SSH and GPG keys” 点击右侧的“Add SSH Key” 添加title(例如“nakeman at home”),然后将公钥粘贴到大文本框中

链接测试

$ ssh -T git@github.com 有“成功认证”信息表示成功链接

配置本地git 并推送repo

主要是配置本地repo的远程(remote)关联 $ git remote add origin git@github.com:username/new_repo

推送 $ git push -u origin master

help.github.com/en/github/a…