如何在不得到多个gnome钥匙圈解锁提示的情况下并行git pull多个存储库



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

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

当gnome密钥环已经解锁时,这种方法很好,但如果没有解锁,它将分别提示每个存储库。

想法

  1. 获取GNU并行以串行方式执行第一个,然后继续
  2. 手动触发GNOME keyring解锁窗口(我在Ubunseu的StackOverflow上找到了几个解决方案,但在Arch Linux上没有(,然后用现有代码&&

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

附言:在打开了一个问题https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/102.

理念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 {#} {}"

最新更新