git 服務搭建及提交程式碼檢查

lifefriend_007發表於2019-01-09

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

一、安裝 gogs

1、拉取映象

docker pull gogs/gogs複製程式碼

2、建立資料目錄

mkdir -p /var/gogs複製程式碼

3、建立視窗並執行

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

4、配置 gogs

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

二、提交程式碼檢查

提交程式碼檢查主要是利用 git hooks 來執行指令碼,對程式碼進行提交前的檢查,如果檢查不通過,則禁止提交。

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

1、安裝 pre-git

yarn add pre-git@3.17.0 --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"複製程式碼

至些,一個簡單的提交程式碼檢查指令碼就完成了。

來源:https://juejin.im/post/5c35de26e51d45520c3b2c4d

相關文章