本地 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"複製程式碼
至些,一個簡單的提交程式碼檢查指令碼就完成了。