我在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密钥环已经解锁时,这种方法很好,但如果没有解锁,它将分别提示每个存储库。
想法
- 获取GNU并行以串行方式执行第一个,然后继续
- 手动触发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 {#} {}"