本地 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. 商品批量删除(mybatis中集合的使用)

    <!-- 根据主键批量删除 --> <delete id="deleteByKeys"> DELETE FROM product WHERE id in & ...

  2. 十七、 Observer 观察者设计模式

    设计: 代码清单: Observer public interface Observer { void update(NumberGenerator generator); } DigitObserv ...

  3. [Solution] 950. Reveal Cards In Increasing Order

    Difficulty: Medium Problem In a deck of cards, every card has a unique integer. You can order the de ...

  4. JVM参数类型

    java -version看版本号(混合模式) java -Xint -version  解释执行 java -Xcomp -version 编译执行 XX参数是不稳定的用来JVM调优和DeBug B ...

  5. scrapy -->CrawlSpider 介绍

    scrapy -->CrawlSpider 介绍 1.首先,通过crawl 模板新建爬虫: scrapy genspider -t crawl lagou www.lagou.com 创建出来的 ...

  6. stark组件开发之添加功能实现

    添加功能,还是使用, form 组件来完成!  并且 完成添加之后,需要保留原搜索条件. def memory_url(self): '''用于反向生成url, 并且携带,get请求的参数,跳转到下一 ...

  7. 自定义Xadmin

    1.启动Xadmin INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.content ...

  8. 学习Tensorflow的LSTM的RNN例子

    学习Tensorflow的LSTM的RNN例子 基于TensorFlow一次简单的RNN实现 极客学院-递归神经网络 如何使用TensorFlow构建.训练和改进循环神经网络

  9. 《Miracle_House团队》第一次作业:团队亮相

    Our Team:Miracle_House part 1 团队成员组成: NO.1  汝春瑞   201571030125   (组长) Style:乐观开朗,认真踏实,责任心强,还有就是爱笑.随和 ...

  10. docker 技术

    利用docker打包一个sshd的服务 准备环境 安装docker     修改主机名与hosts解析     echo '10.0.0.11 docker01'     参考文档:https://m ...