本地 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. css之标签选择器

    标签(空格分隔): 标签选择器 选择器定义: 在一个HTML页面中会有很多很多的元素,不同的元素可能会有不同的样式,某些元素又需要设置相同的样式,选择器就是用来从HTML页面中查找特定元素的,找到元素 ...

  2. Node2.js

    Node.js简单爬虫的爬取,也是跟着慕课网上抄的,网站有一点点改动,粘上来好复习嘛 var http = require('http') var cheerio = require('cheerio ...

  3. 通过启动函数定位main()函数

      如下,通过vc6.0编写一个hello world程序.尝试结合汇编代码.分析启动函数找到main函数.   在printf(xxx)插入断点,调试执行.如下,在堆栈窗口中可见main()下的一个 ...

  4. c#: WebBrowser控制台输出

    还是处理视频下载所相关的问题. 有些网站,它的页面代码是由页面加载后js动态生成,那么其原始的html便不能用.页面渲染后的代码,是我们需要的 c#中,我用WebBrowser这个控件处理.设置项目类 ...

  5. Centos Firefox中文乱码

    解决CentOS Firefox 中文乱码问题,执行以下命令 Centos 6 # yum -y groupinstall chinese-support 重启电脑即可. Centos 7 yum - ...

  6. Linux mail 查看

    Linux 下查看mail的命令参数: 一般系统收到邮件都会保存在“/var/spool/mail/[linux username]"文件中,在Linux中输入mail,就进入了收件箱,并显 ...

  7. Hadoop 系列(三)Java API

    Hadoop 系列(三)Java API <dependency> <groupId>org.apache.hadoop</groupId> <artifac ...

  8. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

  9. 移动端web轮播图插件swiper,功能很强大

    使用方法示例: <div class="swiper-container"> <div class="swiper-wrapper"> ...

  10. hdu 1290_献给杭电五十周年校庆的礼物

    Description 或许你曾经牢骚满腹或许你依然心怀忧伤或许你近在咫尺或许你我天各一方 对于每一个学子母校 永远航行在生命的海洋 今年是我们杭电建校五十周年,这是一个值得祝福的日子.我们该送给母校 ...