| Linus Torvalds | 51cb06c | 2005-07-08 21:24:25 | [diff] [blame] | 1 | #!/bin/sh |
| freku045@student.liu.se | 806f36d | 2005-12-13 22:30:31 | [diff] [blame] | 2 | |
| 3 | USAGE='[--all] [--force] <repository> [<refspec>...]' |
| Junio C Hamano | ae2b0f1 | 2005-11-24 08:12:11 | [diff] [blame] | 4 | . git-sh-setup |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 5 | |
| 6 | # Parse out parameters and then stop at remote, so that we can |
| 7 | # translate it using .git/branches information |
| 8 | has_all= |
| 9 | has_force= |
| 10 | has_exec= |
| 11 | remote= |
| 12 | |
| 13 | while case "$#" in 0) break ;; esac |
| 14 | do |
| 15 | case "$1" in |
| 16 | --all) |
| 17 | has_all=--all ;; |
| 18 | --force) |
| 19 | has_force=--force ;; |
| 20 | --exec=*) |
| 21 | has_exec="$1" ;; |
| 22 | -*) |
| c.shoemaker@cox.net | c485104 | 2005-10-29 04:16:33 | [diff] [blame] | 23 | usage ;; |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 24 | *) |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 25 | set x "$@" |
| 26 | shift |
| 27 | break ;; |
| 28 | esac |
| 29 | shift |
| 30 | done |
| Junio C Hamano | 9a9cbb6 | 2005-08-26 17:37:17 | [diff] [blame] | 31 | case "$#" in |
| 32 | 0) |
| c.shoemaker@cox.net | f9362de | 2005-10-29 04:17:17 | [diff] [blame] | 33 | echo "Where would you want to push today?" |
| 34 | usage ;; |
| Junio C Hamano | 9a9cbb6 | 2005-08-26 17:37:17 | [diff] [blame] | 35 | esac |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 36 | |
| Junio C Hamano | 215a7ad | 2005-09-08 00:26:23 | [diff] [blame] | 37 | . git-parse-remote |
| Junio C Hamano | ac4b0cf | 2005-08-20 09:52:24 | [diff] [blame] | 38 | remote=$(get_remote_url "$@") |
| 39 | case "$has_all" in |
| 40 | --all) set x ;; |
| 41 | '') set x $(get_remote_refs_for_push "$@") ;; |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 42 | esac |
| Junio C Hamano | ac4b0cf | 2005-08-20 09:52:24 | [diff] [blame] | 43 | shift |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 44 | |
| 45 | case "$remote" in |
| Nick Hengeveld | df8171c | 2005-11-02 19:19:31 | [diff] [blame] | 46 | git://*) |
| c.shoemaker@cox.net | c485104 | 2005-10-29 04:16:33 | [diff] [blame] | 47 | die "Cannot use READ-ONLY transport to push to $remote" ;; |
| 48 | rsync://*) |
| 49 | die "Pushing with rsync transport is deprecated" ;; |
| Junio C Hamano | 46b1c7c | 2005-08-08 05:55:45 | [diff] [blame] | 50 | esac |
| 51 | |
| 52 | set x "$remote" "$@"; shift |
| 53 | test "$has_all" && set x "$has_all" "$@" && shift |
| 54 | test "$has_force" && set x "$has_force" "$@" && shift |
| 55 | test "$has_exec" && set x "$has_exec" "$@" && shift |
| 56 | |
| Nick Hengeveld | df8171c | 2005-11-02 19:19:31 | [diff] [blame] | 57 | case "$remote" in |
| 58 | http://* | https://*) |
| 59 | exec git-http-push "$@";; |
| 60 | *) |
| 61 | exec git-send-pack "$@";; |
| 62 | esac |