Linux 下 svn 使用

﹏ヽ暗。殇╰゛Y 2021-09-22 12:24 573阅读 0赞

Linux 下开发 svn 小工具

使用vscode + svn 开发时,遇到的问题
  • 执行svn status 出现一堆文件
  • 每添加一个文件都需要执行svn add 文件名
开发一个支持配置.svningore 的命令
思路:
  • 执行svn status > .svnstatus.svnstatus
  • 读取.svningore 文件
  • 过滤.svnstatus 文件
代码:
  • shell 脚本 msvn

    1. WORKSPACE_PATH=`pwd` # 获取运行命令的文件目录
    2. cd ${WORKSPACE_PATH} # 进入目录
    3. svn status > .svnstatus # 获取svn 文件状态
    4. node /home/tooles/svnignore.js $* # 执行node脚本过滤文件
  • node脚本 svnignore.js

    1. const fs = require('fs');
    2. // 默认忽略的目录
    3. let ignoreList = [
    4. '.svnstatus',
    5. '.svnignore',
    6. 'msvn',
    7. 'svnignore.js',
    8. '.vscode',
    9. '.metadata',
    10. '.recommenders',
    11. 'logs',
    12. '.settings',
    13. 'target',
    14. ]
  1. try {
  2. // 同步读取忽略文件
  3. let d = fs.readFileSync('./.svnignore');
  4. if (d) {
  5. // 如果配置了则覆盖默认忽略文件
  6. ignoreList = d.toString().split('\n');
  7. }
  8. } catch (error) {
  9. console.log(error)
  10. }
  11. // 读取 svn 文件状态
  12. fs.readFile('./.svnstatus', (err, data) => {
  13. if (err) throw err;
  14. console.log('修改的文件:');
  15. let dataArr = data.toString().split('\n');
  16. // 过滤忽略文件
  17. dataArr = dataArr.filter((v, i) => {
  18. for (let i in ignoreList) {
  19. if (v.indexOf(ignoreList[i]) > 0 || v.trim() === '') {
  20. return;
  21. }
  22. }
  23. // 打印到控制台
  24. console.log('\t', v);
  25. return true;
  26. })
  27. dataArr = dataArr.map((v, i) => {
  28. if (v.startsWith('?')) {
  29. return 'svn add ' + v.substring(1);
  30. } else {
  31. return 'svn commit ' + v.substring(1);
  32. }
  33. })
  34. // 排序 svn add 放到前面
  35. dataArr.sort();
  36. // 将 svn 命令存到 .svnstatus 文件,方便执行
  37. fs.writeFile('./.svnstatus', dataArr.join('\n'), function (err) {
  38. if (err) {
  39. return console.error(err);
  40. }
  41. });
  42. });
  • 配置环境变量 msvn 即可在任意地方执行 msvn 命令, 一款简单的svn 工具开发完成
使用:
  • 项目路径:
    txt ├── a.js └── .svnignore
  • 执行 msvn:

    • 文件目录:

      1. ├── a.js
      2. ├── .svnstatus
      3. └── .svnignore
    • 控制台输出:

      1. 修改的文件:
      2. ? a.js
  • a.js加入 .svnignor 文件
  • 执行 msvn:

    • 文件目录:

      1. ├── a.js
      2. ├── .svnstatus
      3. └── .svnignore
    • 控制台输出:

      1. 修改的文件:

      成功忽略了a.js

发表评论

表情:
评论列表 (有 0 条评论,573人围观)

还没有评论,来说两句吧...

相关阅读