bash脚本来git pull

时间:2016-05-11 04:05:03

标签: git bash

所以我有几个子域列表的文件夹。每个文件夹都包含相同的脚本,用于动态猜测主机并加载多个配置。

所以这个列表正在增长,cd到每个文件夹git pull正变得越来越无聊。

我的客户端托管服务有限,我无法向主机添加ssh密钥以使其为“无密码”,因此我通过HTTPS进行提取。

我不是bash专家,但基本循环是:

for dir in /tmp/*/
do
 #passwordless pulls
done

现在抓住了,一些文件夹需要拉动开发,其他文件夹拉动主分支。

2 个答案:

答案 0 :(得分:3)

while read repo remote branch rest; do
   (  cd $repo
      git pull $remote $branch
      # do whatever with $rest 
   ) 2>&1 | sed "s#^#$repo: #" &
done <<EOD
/path/to/repo origin branch1
/path/to/another github master
EOD

或者您可以将这些内容放在一个文件</path/to/file中,而不是在<<EOD之后将其内联。

这将同时触发所有拉动,如果你有很多它们或许它最好用&替换最后的;(或者等效地删除它)。

答案 1 :(得分:1)

DEVLIST="list of hosts that pull develop"
MASTERLIST="list of hosts that pull master"

for D in ${DEVLIST}
do
  cd /tmp/${D}
  git clone https://my.repo.edu/git/repo.git -b develop --single-branch
done

for M in ${MASTERLIST}
do
  cd /tmp/${M}
  git clone https://my.repo.edu/git/repo.git -b master --single-branch
done