Linux 下 svn 使用
Linux 下开发 svn 小工具
使用vscode + svn 开发时,遇到的问题
- 执行
svn status
出现一堆文件 - 每添加一个文件都需要执行
svn add 文件名
开发一个支持配置.svningore
的命令
思路:
- 执行
svn status > .svnstatus
到.svnstatus
- 读取
.svningore
文件 - 过滤
.svnstatus
文件
代码:
shell 脚本
msvn
WORKSPACE_PATH=`pwd` # 获取运行命令的文件目录
cd ${WORKSPACE_PATH} # 进入目录
svn status > .svnstatus # 获取svn 文件状态
node /home/tooles/svnignore.js $* # 执行node脚本过滤文件
node脚本
svnignore.js
const fs = require('fs');
// 默认忽略的目录
let ignoreList = [
'.svnstatus',
'.svnignore',
'msvn',
'svnignore.js',
'.vscode',
'.metadata',
'.recommenders',
'logs',
'.settings',
'target',
]
try {
// 同步读取忽略文件
let d = fs.readFileSync('./.svnignore');
if (d) {
// 如果配置了则覆盖默认忽略文件
ignoreList = d.toString().split('\n');
}
} catch (error) {
console.log(error)
}
// 读取 svn 文件状态
fs.readFile('./.svnstatus', (err, data) => {
if (err) throw err;
console.log('修改的文件:');
let dataArr = data.toString().split('\n');
// 过滤忽略文件
dataArr = dataArr.filter((v, i) => {
for (let i in ignoreList) {
if (v.indexOf(ignoreList[i]) > 0 || v.trim() === '') {
return;
}
}
// 打印到控制台
console.log('\t', v);
return true;
})
dataArr = dataArr.map((v, i) => {
if (v.startsWith('?')) {
return 'svn add ' + v.substring(1);
} else {
return 'svn commit ' + v.substring(1);
}
})
// 排序 svn add 放到前面
dataArr.sort();
// 将 svn 命令存到 .svnstatus 文件,方便执行
fs.writeFile('./.svnstatus', dataArr.join('\n'), function (err) {
if (err) {
return console.error(err);
}
});
});
- 配置环境变量
msvn
即可在任意地方执行msvn
命令, 一款简单的svn
工具开发完成
使用:
- 项目路径:
txt ├── a.js └── .svnignore
执行
msvn
:文件目录:
├── a.js
├── .svnstatus
└── .svnignore
控制台输出:
修改的文件:
? a.js
- 将
a.js
加入.svnignor
文件 执行
msvn
:文件目录:
├── a.js
├── .svnstatus
└── .svnignore
控制台输出:
修改的文件:
成功忽略了
a.js
还没有评论,来说两句吧...