const fs = require('fs')
const path = require('path')
const exec = require('child_process').exec
const command = 'git diff --name-status HEAD~2 HEAD~3'
// 获取git改动清单
const getArrList = (str, type) => {
const arr = str.split('\n')
return arr.filter(item => {
const regex = new RegExp(`[${type}].*`)
if (regex.test(item)) {
return item !== undefined
}
})
}
/**
* @description 获取类型清单
* @param {*} arr
* @param {*} type M:修改,D:删除 A:新增
* @returns
*/
const formatList = (arr, type) => {
return arr.map(item => {
return item.replace(/\s/g, '').replace(type, '')
})
}
exec(command, 'utf8', (err, stdout, stderr) => {
if (err) {
console.log('err:', err)
console.log('stderr:', stderr)
} else {
const typeList = ['M', 'D', 'A']
const dictList = {
'M': '修改',
'D': '删除',
'A': '新增'
}
let arr
typeList.forEach(type => {
arr = getArrList(stdout, type)
arr = formatList(arr, type)
console.log(`${dictList[type]}:`, arr)
const options = {
encoding: 'utf8'
}
const dir = path.resolve(__dirname, '../file')
const data = `${dictList[type]}:\n` + arr.join('\n') + '\n'
if (arr.length > 0) {
fs.appendFile(dir + '/1.txt', data, options, (err) => {
if (err) console.log(err)
})
}
})
}
})
node获取git修改文件清单
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 问题描述: 从git上clone代码 有个配置文件,配置文件中配置的项,不同的人可能不一样 因此每个人修改后不能提...
- git 放弃本地某个文件的修改,或所有修改git checkout 文件名git checkout // 放弃所有...
- 1、问题: 在git项目中,已push到远程的文件夹或文件,将其名称大小写修改,修改git无法检测出。 2、原因:...