本地 git 服务,通常都会选择 gitlab。本人最先也是选择 gitlab,在 centos7 上按照官网的步骤进行安装,下载的速度难以忍受,无奈放弃。最终选择在 docker 中安装 gogs 镜像来自建 git 服务。

一、安装 gogs

1、拉取镜像

docker pull gogs/gogs

2、创建数据目录

mkdir -p /var/gogs

3、创建窗口并运行

docker run --privileged=true -d --name=git-gogs -p : -p : -v /var/gogs:/data gogs/gogs

4、配置 gogs

浏览器输入 url : http://ip:13000

...

配置保存路径:

/var/gogs/gogs/conf/app.ini

二、提交代码检查

提交代码检查主要是利用 git hooks 来运行脚本,对代码进行提交前的检查,如果检查不通过,则禁止提交。

本交使用的是客户端钩子,工程是用 vue-cli 创建的。

1、安装 pre-git

yarn add pre-git@3.17. --dev

2、配置 pre-git

在 package.json 中插入下列代码

"scripts": {
"lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
"pre-check": "node verify/commit-check.js && npm run lint"
},
"config": {
"pre-git": {
"enabled": true,
"commit-msg": "simple",
"pre-commit": [
"npm run pre-check"
],
"pre-push": [],
"post-commit": [],
"post-checkout": [],
"post-merge": []
}
}

3、编写自定义代码检查脚本

在项目根目录下创建 verify/commit-check.js,此次检查主要实现:强制使用 eslint ,强制文件头部添加注释说明。commit-check.js 内容如下:​

 const fs = require('fs')
const path = require('path')
const config = require('../config')

// 彩色输出错误信息
// 开始时使用 chalk
// windows 下无效
// 有更好的方法欢迎留言
function ConsoleLog () {}
ConsoleLog.prototype.white = function (info) {
console.log('\x1B[37m', info)
}
ConsoleLog.prototype.green = function (info) {
console.log('\x1B[32m', info)
}
ConsoleLog.prototype.red = function (info) {
console.log('\x1B[31m', info)
}

const consoleLog = new ConsoleLog()

// 检查 eslint 是否打开
if (!config.dev.useEslint) {
consoleLog.green('###########################')
consoleLog.red('ERROR: ' + 'Set config.dev.useEslint = true.')
consoleLog.red('请设置 config.dev.useEslint = true.')
consoleLog.white('\n')
process.exit(1)
} else {
readDirSync(path.join(__dirname, '../src'))
}

// 检查文件头是否含有注释
function checkComments (file) {
const extname = path.extname(file)
if (extname === '.vue' || extname === '.js') {
const lines = fs.readFileSync(file).toString().replace(/(^\s*)|(\s*$)/g, '')
if (lines.startsWith('<!--') || lines.startsWith('/*')) {

} else {
consoleLog.green('###########################')
consoleLog.red('ERROR: ' + 'Add file header comments.')
consoleLog.red('请添加文件头部注释.')
consoleLog.white('\n')
process.exit(1)
}
}
}
// 遍历文件夹
function readDirSync (path) {
let pa = fs.readdirSync(path)
pa.forEach(function (ele) {
let info = fs.statSync(path + '/' + ele)
if (info.isDirectory()) {
readDirSync(path + '/' + ele)
} else {
checkComments(path + '/' + ele)
}
})
}

三、测试下

git add .
git commit -m "test"

至些,一个简单的提交代码检查脚本就完成了。

git 服务器搭建及提交代码检查的更多相关文章

  1. Git服务器搭建笔记

    前言:最近公司要使用git服务器对Android4.4的源码进行版本控制,所以花了些时间在Ubuntu14.04上搭建了git服务器,正好前段时间也学习了下git的使用哈哈 ------------- ...

  2. Ubuntu中Git服务器搭建

    git服务器搭建过程 参考网上资料搭建git服务器过程记录 如下: 需求 硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到. 软件需求:git-core, gitosis, ...

  3. SVN服务器搭建之提交日志模版构建

    SVN服务器搭建之提交日志模版构建 日志提交有两种 一种是自己客户端设置提交日志模版,这个只适用于自己,没办法强制性运用到项目中,只能依照每个人的自觉性来处理. 第二种方法是SVN服务器设置提交日志模 ...

  4. 基于阿里云服务器的git服务器搭建

    使用阿里云Ubuntu 12.0.4 64位操作系统做git服务器. 首先git服务器有两种访问方式可以选择:http方式和ssh的方式,http方式更容易使用. 1.http方式的git服务器搭建以 ...

  5. Git系列(1) Windows下Git服务器搭建

    作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 我们这里只需要两个软件git和ssh, ...

  6. Windows下Git服务器搭建[转]

    Windows下Git服务器搭建   作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...

  7. git知识总结-4.git服务器搭建及迁移git仓库

    1. 前言 因为手里有一份代码之前是直接从其它git服务器上克隆下来的,现在想自己搭建一个git服务器把这份代码管起来. 2. 搭建git服务器 1.安装git: $ sudo apt-get ins ...

  8. ECS之Git服务器搭建

    最简教程 ### . 安装Git 安装Git服务,命令如下: ```Shell $ yum install curl-devel expat-devel gettext-devel openssl-d ...

  9. git服务器搭建全程

    为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具 [root@VM_95_113_centos ~]# yum install curl-devel expat-devel gettext ...

随机推荐

  1. 用命令生成Webservice 对应的代理类

    wsdl /language:C# /namespace:Camstar.WebPortal.WebPortlets.Shopfloor.SAP.GreatWall /out:gwSAPService ...

  2. 【JAVA】杨辉三角

    ソース public Yanghui3jiao() { List<String[]> rowList = new ArrayList<String[]>(); List< ...

  3. MySQL误删数据

    首先看下mysql误删数据排名最前的几种是: 1.误删文件 2.误删库.表 3.错误全表删除 / 更新 4.升级操作失误 都来看看你命中过几个,hoho. 简单说下我亲手造的一个大事故吧. 那大概是一 ...

  4. oracle 查询索引和主键

    ORACLE: 1.查主键名称: select * from user_constraints where table_name = 'AAA' and constraint_type ='P'; 查 ...

  5. [Java核心技术]第四章-对象与类(4.1-4.6总结)

    4.1面向对象程序设计概述 OOP(面向对象编程Object Oriented Programming) OOP中数据第一位,算法第二位. 类 封装:关键在于不能让其他方法直接访问类的实例域,程序仅通 ...

  6. 微信小程序之---- 数据处理

    exports 关键字      .wxs 通过该属性,可以对外共享本模块的私有变量与函数   使用步骤 1. 在 .wxs后缀文件 exports定义参数 var foo = "'hell ...

  7. XML文件的DTD编写

    <?xml version="1.0" encoding="UTF-8" ?> <!--DTD外部引用:--> <!DOCTYPE ...

  8. ABP框架系列之三十二:(Logging-登录)

    Server Side(服务端) ASP.NET Boilerplate uses Castle Windsor's logging facility. It can work with differ ...

  9. Linux使用MentoHust联网线上校园网, 回到普通有线网络却连不上?

    我的解决方法如下: 在有线网的设置(Wired Settings)那里, 弹出Network窗口, 点击右下角的设置图标, 选择Security, 然后关掉802.1x Security. 然后就可以 ...

  10. PostgreSQL与PostGIS的关系

    PostgreSQL相当于PostGIS的祖先,PostGIS是在PostgreSQL的基础上发展起来的,从它们的名字上也能看出些许端倪.PostgreSQL是一个开源数据库,而PostGIS在此基础 ...