uni-app 查看每一行代码的最后修改时间和修改人

发布于 1周前 作者 eggper 来自 Uni-App

uni-app 查看每一行代码的最后修改时间和修改人

可以查看git每一行代码的最后修改时间和修改人。

2 回复

插件市场有一些,你看下哪个能满足你的需求
https://ext.dcloud.net.cn/search?q=git&cat1=1&cat2=11


在uni-app项目中,直接查看每一行代码的最后修改时间和修改人并不是内置的功能。这种需求通常涉及版本控制系统(如Git)的集成和代码分析工具的使用。以下是一个使用Git和Node.js脚本结合的方式,来提取每一行代码的最后修改时间和修改人的示例。

步骤1:确保你的项目使用Git管理

首先,确保你的uni-app项目已经使用Git进行版本控制。如果没有,请初始化一个Git仓库:

git init

步骤2:使用Git Blame获取修改信息

Git提供了git blame命令,可以显示文件中每一行代码的最后一次修改信息,包括修改人和修改时间。

步骤3:编写Node.js脚本来解析Git Blame输出

下面是一个简单的Node.js脚本示例,它遍历项目中的所有文件,并使用git blame获取每一行代码的修改信息。

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

const rootDir = path.join(__dirname, 'your-uni-app-project'); // 替换为你的uni-app项目目录

function getBlameInfo(filePath) {
  const result = execSync(`git blame --porcelain ${filePath}`).toString().split('\n');
  const linesInfo = [];

  for (let i = 1; i < result.length; i++) {
    const line = result[i];
    const [hash, originalLine, lineNumber, author, time, rest] = line.split('\t');
    linesInfo.push({
      lineNumber: parseInt(lineNumber, 10),
      author,
      time: new Date(parseInt(time, 10) * 1000), // Git时间戳是秒级,JavaScript Date是毫秒级
      content: rest.trim()
    });
  }

  return linesInfo;
}

function traverseDir(dir) {
  const files = fs.readdirSync(dir);

  files.forEach(file => {
    const fullPath = path.join(dir, file);
    const stat = fs.statSync(fullPath);

    if (stat.isDirectory()) {
      traverseDir(fullPath);
    } else if (stat.isFile() && fullPath.endsWith('.vue') || fullPath.endsWith('.js')) { // 根据需要添加文件类型
      const blameInfo = getBlameInfo(fullPath);
      console.log(`File: ${fullPath}`);
      blameInfo.forEach(info => {
        console.log(`Line ${info.lineNumber}: Author - ${info.author}, Time - ${info.time}`);
      });
    }
  });
}

traverseDir(rootDir);

说明

  1. 脚本逻辑:该脚本遍历指定目录(uni-app项目根目录),对符合条件的文件(如.vue.js文件)执行git blame命令,并解析输出。
  2. 时间转换:Git的时间戳是秒级的,而JavaScript的Date对象是毫秒级的,因此需要进行转换。
  3. 扩展性:你可以根据需要扩展该脚本,例如添加更多的文件类型或格式化输出。

通过这种方式,你可以查看uni-app项目中每一行代码的最后修改时间和修改人。

回到顶部