1

.zshrc我在 Arch Linux 上将以下别名用于git pull并行目录中的所有存储库:

alias multipull="find . -maxdepth 5 -name .git -type d | rev | cut -c 6- | rev | parallel -j64 'echo -n {}... && git -C {} pull'"

当 gnome-keyring 已解锁但未解锁时,这可以正常工作,它会分别提示每个存储库。

想法

  1. 让 GNU 并行以串行方式执行第一个,然后才继续
  2. 手动触发 GNOME 密钥环解锁窗口(我在 StackOverflow 上为 Ubunutu 找到了几个解决方案,但在 Arch Linux 上没有找到),然后&&使用现有代码

但也欢迎其他方法。但是我不是在寻找一种连续执行它的方法。虽然这解决了问题,但速度要慢得多。

4

1 回答 1

0

想法 2。您可能知道快速拉取的 git 存储库之一。先手动运行。也许您甚至可以仅出于该目的创建一个。

如果你想追求想法1,你可以使用(未​​经测试):

do_pull() {
  seq="$1"
  git="$2"
  if [ 1 = "$seq" ] ; then
    # this is job 1
    touch flag
  else
    while [ -e flag ] ; do
      # Wait for file flag to vanish
      sleep 1
    done
  fi
  echo -n "$git..."
  git -C "$git" pull
  rm -f flag
}
export -f do_pull
alias multipull="touch flag; ... | parallel -j64 do_pull {#} {}"
于 2022-01-20T21:10:08.943 回答