aboutsummaryrefslogtreecommitdiffhomepage
path: root/bin/init/sync.sh
blob: 351bb74d7b1d7e10b6be36174f9019b341ac6a62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash

# If git is working in other process, then don't sync again
pidof git >/dev/null && exit 0

# my repo
sync() {
  cd "$1" || return
  [ -z "$(git remote -v)" ] && return

  pwd
  GIT_SSH_COMMAND="ssh -o ControlMaster=no" git pull --quiet || \
    echo "Has trouble when syncing $(pwd)"
}

sed /^#/d ~/.repos | while read -r repo; do
  eval "sync $repo &"
done

while true; do
  if test "$(jobs -r | wc -l)" -gt 0; then
    sleep 1;
  else
    which notify-send &>/dev/null && notify-send 'Repos synced'
    break
  fi
done

touch ~/.wakeup

# others repo
#check_upstream ~/git/tig || echo in `pwd` >/dev/tty &