rebase instead of pulling to get rid of merge master branch objects
[infrastructure.git] / scripts / git-mirror.sh
1 #!/bin/bash
2
3 MIRROR="git://git.planet-lab.org"
4 LOCAL="/git"
5
6 function mirror () {
7     for arg in "$@" ; do
8         REPO=${arg}
9         REPO_NAME=${REPO}.git
10         MIRROR_REPO=${MIRROR}/${REPO_NAME}
11         LOCAL_REPO=${LOCAL}/${REPO_NAME}
12
13         if [ -d ${REPO} ]
14         then
15             echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx pulling from ${REPO_NAME}"
16             pushd ${REPO}
17             git fetch origin --tags
18             git fetch origin
19             git rebase origin
20             popd
21         else
22             echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mirroring in ${REPO_NAME} for the first time"
23             git clone ${MIRROR_REPO}
24             pushd ${REPO}
25             git remote add local_master ${LOCAL_REPO}
26             popd
27         fi
28
29         echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx pushing ${REPO_NAME} to local master"
30         pushd ${REPO}
31         git fetch local_master --tags
32         git fetch local_master
33         git rebase local_master
34
35         git push local_master
36         git push --tags local_master
37         popd
38     done
39 }
40
41 args="$@"
42 [[ -z "$args" ]] && args=$(ls /svn)
43
44 mirror $args
45