]> git.ipfire.org Git - thirdparty/git.git/blob - git-push.sh
Add support for git-http-push to git-push script
[thirdparty/git.git] / git-push.sh
1 #!/bin/sh
2 . git-sh-setup || die "Not a git archive"
3
4 usage () {
5 die "Usage: git push [--all] [--force] <repository> [<refspec>]"
6 }
7
8
9 # Parse out parameters and then stop at remote, so that we can
10 # translate it using .git/branches information
11 has_all=
12 has_force=
13 has_exec=
14 remote=
15
16 while case "$#" in 0) break ;; esac
17 do
18 case "$1" in
19 --all)
20 has_all=--all ;;
21 --force)
22 has_force=--force ;;
23 --exec=*)
24 has_exec="$1" ;;
25 -*)
26 usage ;;
27 *)
28 set x "$@"
29 shift
30 break ;;
31 esac
32 shift
33 done
34 case "$#" in
35 0)
36 echo "Where would you want to push today?"
37 usage ;;
38 esac
39
40 . git-parse-remote
41 remote=$(get_remote_url "$@")
42 case "$has_all" in
43 --all) set x ;;
44 '') set x $(get_remote_refs_for_push "$@") ;;
45 esac
46 shift
47
48 case "$remote" in
49 git://*)
50 die "Cannot use READ-ONLY transport to push to $remote" ;;
51 rsync://*)
52 die "Pushing with rsync transport is deprecated" ;;
53 esac
54
55 set x "$remote" "$@"; shift
56 test "$has_all" && set x "$has_all" "$@" && shift
57 test "$has_force" && set x "$has_force" "$@" && shift
58 test "$has_exec" && set x "$has_exec" "$@" && shift
59
60 case "$remote" in
61 http://* | https://*)
62 exec git-http-push "$@";;
63 *)
64 exec git-send-pack "$@";;
65 esac