]>
Commit | Line | Data |
---|---|---|
7ef76925 LT |
1 | #!/bin/sh |
2 | # | |
b33e9666 | 3 | . git-sh-setup-script || die "Not a git archive" |
f170e4b3 JH |
4 | . git-parse-remote "$@" |
5 | merge_repo="$_remote_repo" | |
6 | merge_head="$_remote_head" | |
7 | merge_store="$_remote_store" | |
b33e9666 | 8 | |
0a623e7c | 9 | TMP_HEAD="$GIT_DIR/TMP_HEAD" |
7ef76925 | 10 | |
0a623e7c | 11 | case "$merge_repo" in |
3dcb90f5 DT |
12 | http://* | https://*) |
13 | if [ -n "$GIT_SSL_NO_VERIFY" ]; then | |
14 | curl_extra_args="-k" | |
15 | fi | |
96155e55 JH |
16 | _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' && |
17 | _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" && | |
18 | head=$(curl -ns $curl_extra_args "$merge_repo/$merge_head") && | |
19 | expr "$head" : "$_x40\$" >/dev/null || { | |
20 | echo >&2 "Failed to fetch $merge_head from $merge_repo" | |
21 | exit 1 | |
22 | } | |
f170e4b3 | 23 | echo Fetching "$merge_head" using http |
0f2b4c46 | 24 | git-http-pull -v -a "$head" "$merge_repo/" || exit |
0a623e7c LT |
25 | ;; |
26 | rsync://*) | |
f170e4b3 | 27 | rsync -L "$merge_repo/$merge_head" "$TMP_HEAD" || exit 1 |
0a623e7c LT |
28 | head=$(git-rev-parse TMP_HEAD) |
29 | rm -f "$TMP_HEAD" | |
30 | rsync -avz --ignore-existing "$merge_repo/objects/" "$GIT_OBJECT_DIRECTORY/" | |
31 | ;; | |
32 | *) | |
f170e4b3 | 33 | head=$(git-fetch-pack "$merge_repo" "$merge_head") |
0a623e7c LT |
34 | ;; |
35 | esac || exit 1 | |
f170e4b3 | 36 | |
0a623e7c | 37 | git-rev-parse --verify "$head" > /dev/null || exit 1 |
f170e4b3 JH |
38 | |
39 | case "$merge_store" in | |
40 | '') | |
60ea0fdd LT |
41 | ;; |
42 | *) | |
f170e4b3 JH |
43 | echo "$head" > "$GIT_DIR/$merge_store" |
44 | esac && | |
45 | ||
46 | # FETCH_HEAD is fed to git-resolve-script which will eventually be | |
47 | # passed to git-commit-tree as one of the parents. Make sure we do | |
48 | # not give a tag object ID. | |
49 | ||
50 | git-rev-parse "$head^0" >"$GIT_DIR/FETCH_HEAD" |