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