虽一毫而莫取

发布于
批量迁移邮件和代码

还有几天就将告别一段生活。TODO 里搁置了几天的任务,今天总算完成了。

迁移邮件

公司用的是腾讯企业邮箱,迁移邮件方法,最直接的是批量转发。这样效率太低,一次只能转发 10 封。于是下载了 Foxmail 客户端,支持直接用微信登录。然后可以把邮件全部都转移到不同账号的文件夹下面。我自己也有腾讯企业邮箱,于是直接右键完成操作。理论上公司邮箱注销了,不至于影响到我个人的邮箱吧?

迁移代码

代码仓库都在 git gogs 上,首先获取所有仓库地址:

[...document.querySelectorAll('li.private a')].map(x=>x.href).join('\n')

将链接全都复制到 文件夹里的 repo.txt 里边。

然后写一个 powershell 脚本,完成以下任务:

  1. 获取 repo.txt 的内容
  2. 遍历每一个地址
  3. 克隆仓库
  4. 进到仓库目录
  5. 遍历所有分支
  6. 拉取最新代码

一开始一直报错,还以为是要异步完成才行,结果发现忘记切换目录了

$file = get-content repo.txt;
foreach ($r in $file) {
  git clone $r
  $name = $r -Split "/"
  cd $name[4]
  $result = git branch -r;
  echo $result
  foreach ($n in $result) {
    if ( -not ( $n -match '->' ) ) {
      git checkout -t $n.Trim(" `t`n`r")
      git pull
    }
  }
  cd ../
}

2021年5月27日 更新:

获取 gitLab 上的仓库地址:

a = [...document.querySelectorAll('.projects-list>li h3 a')].map(x=>x.href).join('\n')
copy(a)

shell 脚本:

  1. 获取 repo 的内容
  2. 先进到项目目录,克隆仓库,再进到仓库目录
#!/bin/bash
while read line; do
  echo $line;
  dir="$(cut -d'/' -f4 <<<$line)";
  dir2="$(cut -d'/' -f5 <<<$line)";
  mkdir -p $dir
  cd $dir
  git clone $line $dir2;
  cd $dir2
  branch=$(git branch -r | tail -n +2)
  for b in $branch ; do
    git checkout -t $b
    git pull
  done;
  cd ../../
done < repo