hwj35
2025-06-16 d21a6d7f3b678aa63c13f55b34dd66215b16b737
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/sh
 
Branch=master
Tag=""
 
# 客户端根路径
client_path="./"
 
# 开关 【0】不拉取 【1】冲突不拉取 【2】强拉、覆盖
client=2
 
 
# 标签
t_client=$Tag
 
 
# 路径配置
 
 
 
# 远程Git
g_client="http://admin@192.168.1.20:10010/r/snxx_server.git"
 
 
 
# 无则创建;且拉取最新
# $1 路径
# $2 git地址
# $3 标签
cloneAll() {
    
    if [ $1 = 0 ]; then return; fi
    
    echo
    echo "===================="
    echo "path:"$2
    echo "git:"$3
    echo "tag:"$4
    echo "===================="
    
    # 不存在路径就创建
    if [ ! -d $2 ];then
        echo "第一次创建"
        git clone $3 $2
    fi
    
    # 拉取
    cd $2        
    git stash
    git pull --progress -f    
 
    # 无标签
    if [ -z $4 ];then        
        if [ $1 = 2 ];then
            git checkout -B $Branch origin/${Branch} -f
        else
            git checkout -B $Branch origin/${Branch}
        fi
    else    
        #删本地标签
        git tag -d $4        
        git pull --progress -f    
    
        #切分支
        git checkout -B $Branch origin/${Branch} -f            
        #切标签
        git reset $4 --hard    
    fi    
}
 
 
copyHooks() {
    
    if [ $1 = 0 ]; then return; fi
    
    echo $1
    root=$1
    echo root
    fileFrom=${root}"/Hooks/commit-msg"
    fileTo=${root}"/.git/hooks/commit-msg"
    echo $fileFrom
    echo $fileTo
 
    cp $fileFrom $fileTo
}
 
# client 一定要拉取
if [ ! -d ${client_path} ]; then mkdir ${client_path}; fi
if [ "`ls -A $client_path`" = "" ]; then rm -rf $client_path; fi
cloneAll $client $client_path $g_client $t_client
copyHooks $client_path
 
 
echo
read -p "操作完成,点Enter键退出"