如何以多线程或有效的方式执行“git pull”?

Chi*_*iya 5 git bash multithreading

我有一个名为“projects”的目录,它是父目录,在我的项目附近有 200 个子目录。

现在我正在git pull通过以下脚本执行。

#!/bin/bash  
find . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull && echo -e '-------------------- \n ' " \;
Run Code Online (Sandbox Code Playgroud)

有没有什么有效的方法可以以多线程和更快的方式完成这个过程?

Chi*_*iya 3

所有子目录都没有相同的 git 存储库,而且也没有submodules。所以现在我通过下面的xargs解决这个问题。

#!/bin/bash
find . -type d -name '.git' -print0 | xargs -P 40 -n 1 -0 -I '{}' sh -c "cd \"{}\"/../ && git pull && pwd && echo -e '-------------------- \n ' " \;
Run Code Online (Sandbox Code Playgroud)
  • find .- 从当前工作目录开始查找(默认情况下递归)
  • -type d -name '.git'- 查找所有以.git目录作为子目录的目录。
  • -print0- 作为 xargs 输入的目录列表

我还在 http://coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/7找到了一些很好的帮助