本地 git 服務,通常都會選擇 gitlab。本人最先也是選擇 gitlab,在 centos7 上按照官網的步驟進行安裝,下載的速度難以忍受,無奈放棄。最終選擇在 docker 中安裝 gogs 鏡像來自建 git 服務。 一、安裝 gogs 1、拉取鏡像 2、創建數據目錄 3、創建視窗並運行 ...
一、安裝 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 內容如下:
1 const fs = require('fs') 2 const path = require('path') 3 const config = require('../config') 4 5 // 彩色輸出錯誤信息 6 // 開始時使用 chalk 7 // windows 下無效 8 // 有更好的方法歡迎留言 9 function ConsoleLog () {} 10 ConsoleLog.prototype.white = function (info) { 11 console.log('\x1B[37m', info) 12 } 13 ConsoleLog.prototype.green = function (info) { 14 console.log('\x1B[32m', info) 15 } 16 ConsoleLog.prototype.red = function (info) { 17 console.log('\x1B[31m', info) 18 } 19 20 const consoleLog = new ConsoleLog() 21 22 // 檢查 eslint 是否打開 23 if (!config.dev.useEslint) { 24 consoleLog.green('###########################') 25 consoleLog.red('ERROR: ' + 'Set config.dev.useEslint = true.') 26 consoleLog.red('請設置 config.dev.useEslint = true.') 27 consoleLog.white('\n') 28 process.exit(1) 29 } else { 30 readDirSync(path.join(__dirname, '../src')) 31 } 32 33 // 檢查文件頭是否含有註釋 34 function checkComments (file) { 35 const extname = path.extname(file) 36 if (extname === '.vue' || extname === '.js') { 37 const lines = fs.readFileSync(file).toString().replace(/(^\s*)|(\s*$)/g, '') 38 if (lines.startsWith('<!--') || lines.startsWith('/*')) { 39 40 } else { 41 consoleLog.green('###########################') 42 consoleLog.red('ERROR: ' + 'Add file header comments.') 43 consoleLog.red('請添加文件頭部註釋.') 44 consoleLog.white('\n') 45 process.exit(1) 46 } 47 } 48 } 49 // 遍歷文件夾 50 function readDirSync (path) { 51 let pa = fs.readdirSync(path) 52 pa.forEach(function (ele) { 53 let info = fs.statSync(path + '/' + ele) 54 if (info.isDirectory()) { 55 readDirSync(path + '/' + ele) 56 } else { 57 checkComments(path + '/' + ele) 58 } 59 }) 60 }
三、測試下
git add . git commit -m "test"
至些,一個簡單的提交代碼檢查腳本就完成了。