2024.12.09
项目因技术栈或其他原因,会有迁移。迁移过程中,会存在原项目和新项目同时改动的情况,这里介绍下如何利用脚本提速。
首先并不是所有的情况都适合用脚本,如果原项目改动少,新项目改动多,直接手动复制粘贴即可。脚本更适合原项目改动文件多,手动复制工作量大、且易出错的情况。
1. 先找到diff文件
diff 可以从工蜂平台获得,在diff处,打开console,输入以下脚本,可以获取diff文件列表。
ts
const titleSelector = '.review-diffs-file__header--content a:first-of-type';
// 选择器可以能会变,灵活变通即可
function getAllDiffFiles() {
const list = document.querySelectorAll(titleSelector);
const titleList = [...list].map(item => item.innerText).map(item => item.trim());
const json = JSON.stringify(titleList);
console.log('titleList', titleList);
console.log('json', json);
}
getAllDiffFiles();
2. 脚本复制
打开两个项目,注意 git pull 到最新。把上一步拿到的文件列表放到 temp.json 中,然后执行下面的脚本进行复制
ts
const path = require('path');
const fs = require('fs');
const { writeFileSync, readFileSync } = require('t-comm');
const diffFiles = require('./temp.json');
console.log('diffFiles', diffFiles);
const ROOT_MAP = {
from: '/Users/yang/Documents/git-aow/web',
to: '/Users/yang/Documents/git-aow/pvp-next',
};
function copyDiffFiles() {
diffFiles.forEach((file) => {
const from = path.resolve(ROOT_MAP.from, file);
const to = path.resolve(ROOT_MAP.to, file);
if (fs.existsSync(to)) {
const content = readFileSync(from);
writeFileSync(to, content);
} else {
console.log('not exist: ', to);
}
});
}
copyDiffFiles();
注意:
- 原项目和新项目都要 pull 到最新,想同步release分支,就切到release最新,develop同理。
- 注意一些已经删除的文件和移动文件,需要手动处理
3. 检查
最重要的一步就是检查,建议一边打开工蜂的 diff,一边打开 vscode 的diff,保留想保留的。最耗时间!