git 服務搭建及提交代碼檢查

本地 git 服務,一般都會選擇 gitlab。本人最早也是選擇 gitlab,在 centos7 上按照官網的步驟進行安裝,下載的速度難以忍受,無奈放棄。最終選擇在 docker 中安裝 gogs 鏡像來自建 git 服務。vue

1、安裝 gogsnode

一、拉取鏡像git

docker pull gogs/gogs
複製代碼

二、建立數據目錄vue-cli

mkdir -p /var/gogs
複製代碼

三、建立窗口並運行docker

docker run -d --name=git-gogs -p 10022:22 -p 13000:3000 -v /var/gogs:/data gogs/gogs
複製代碼

四、配置 gogsnpm

瀏覽器輸入 url : http://ip:13000json

...windows

2、提交代碼檢查centos

提交代碼檢查主要是利用 git hooks 來運行腳本,對代碼進行提交前的檢查,若是檢查不經過,則禁止提交。瀏覽器

本交使用的是客戶端鉤子,工程是用 vue-cli 建立的。

一、安裝 pre-git

yarn add pre-git@3.17.0 --dev
複製代碼

二、配置 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": []
    }
}
複製代碼

三、編寫自定義代碼檢查腳本

在項目根目錄下建立 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)
        }
    })
}
複製代碼

3、測試下

git add .
git commit -m "test"
複製代碼

至些,一個簡單的提交代碼檢查腳本就完成了。

相關文章
相關標籤/搜索