-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit-sync.sh
More file actions
executable file
·62 lines (47 loc) · 1.71 KB
/
git-sync.sh
File metadata and controls
executable file
·62 lines (47 loc) · 1.71 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bash
inicializar_ssh_agent() {
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
echo "=> SSH agent iniciado e chave privada adicionada."
}
sincronizar_branch() {
local remote=$1
local branch=$2
# Obtém o hash do último commit local sincronizado com o remote 'origin' na branch 'develop'
origin_hash=$(git rev-parse "$branch")
# Obtém o hash do último commit no remote especificado na variável 'remote' para a branch 'develop'
remote_hash=$(git ls-remote "$remote" refs/heads/"$branch" | awk '{print $1}')
if [ "$origin_hash" == "$remote_hash" ]; then
echo "===> Não há commits para sincronizar entre $branch e '$remote/$branch'." #: '$origin_hash' e '$remote_hash'."
else
echo "=> Os commits estão diferentes entre $branch e $remote/$branch." #: '$origin_hash' e '$remote_hash'."
git push -f $remote $branch
echo "===> Sincronização $remote $branch concluída."
fi
}
remote="senado"
# Verifica se o parâmetro foi informado; se não, utiliza remote "senado"
if [ -n "$1" ]; then
remote=$1
fi
inicializar_ssh_agent
echo ""
git checkout develop
echo "=> Verificando sincronização do remote '$remote', branch develop"
sincronizar_branch "$remote" "develop"
echo ""
# Verifica se a branch existe na lista de branches locais
if ! git branch --list | grep -q "^ $remote-main$"; then
echo "=> Criando branch '$remote-main'."
git checkout -b "$remote-main" "$remote"/main
else
echo "=> Checkout da branch '$remote-main'."
git checkout "$remote-main"
fi
git pull -f
echo ""
echo "=> Verificando sincronização do origin, branch main"
sincronizar_branch "origin" "main"
echo ""
echo "=> Sincronização finalizada. Retornando para a branch origin/develop."
git checkout develop