summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/fetch-options.txt7
-rw-r--r--Documentation/git-clone.txt16
-rw-r--r--Documentation/repository-layout.txt6
-rw-r--r--connect.c10
-rwxr-xr-xgit-clone.sh31
-rwxr-xr-xgit-fetch.sh14
-rwxr-xr-xgit-ls-remote.sh11
7 files changed, 70 insertions, 25 deletions
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index e624d3d0ee..83237562d2 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -3,6 +3,13 @@
existing contents of `.git/FETCH_HEAD`. Without this
option old data in `.git/FETCH_HEAD` will be overwritten.
+--upload-pack <upload-pack>::
+-u <upload-pack>::
+ When given, and the repository to fetch from is handled
+ by 'git-fetch-pack', '--exec=<upload-pack>' is passed to
+ the command to specify non-default path for the command
+ run on the other end.
+
-f, \--force::
When `git-fetch` is used with `<rbranch>:<lbranch>`
refspec, it refuses to update the local branch
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 8488202e3c..684e4bdf69 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -9,7 +9,7 @@ git-clone - Clones a repository.
SYNOPSIS
--------
[verse]
-'git-clone' [-l [-s]] [-q] [-n] [--naked] [-o <name>] [-u <upload-pack>]
+'git-clone' [-l [-s]] [-q] [-n] [--bare] [-o <name>] [-u <upload-pack>]
<repository> [<directory>]
DESCRIPTION
@@ -58,11 +58,13 @@ OPTIONS
-n::
No checkout of HEAD is performed after the clone is complete.
---naked::
- Make a 'naked' GIT repository. That is, instead of
+--bare::
+ Make a 'bare' GIT repository. That is, instead of
creating `<directory>` and placing the administrative
files in `<directory>/.git`, make the `<directory>`
- itself the `$GIT_DIR`. This implies `-n` option.
+ itself the `$GIT_DIR`. This implies `-n` option. When
+ this option is used, neither the `origin` branch nor the
+ default `remotes/origin` file is created.
-o <name>::
Instead of using the branch name 'origin' to keep track
@@ -110,17 +112,17 @@ $ git show-branch
------------
-Create a naked repository to publish your changes to the public::
+Create a bare repository to publish your changes to the public::
+
------------
-$ git clone --naked -l /home/proj/.git /pub/scm/proj.git
+$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
------------
Create a repository on the kernel.org machine that borrows from Linus::
+
------------
-$ git clone --naked -l -s /pub/scm/.../torvalds/linux-2.6.git \
+$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
/pub/scm/.../me/subsys-2.6.git
------------
diff --git a/Documentation/repository-layout.txt b/Documentation/repository-layout.txt
index 0347cabbb3..1f19bf86dd 100644
--- a/Documentation/repository-layout.txt
+++ b/Documentation/repository-layout.txt
@@ -3,7 +3,7 @@ git repository layout
You may find these things in your git repository (`.git`
directory for a repository associated with your working tree, or
-`'project'.git` directory for a public 'naked' repository).
+`'project'.git` directory for a public 'bare' repository).
objects::
Object store associated with this repository. Usually
@@ -73,7 +73,7 @@ HEAD::
A symlink of the form `refs/heads/'name'` to point at
the current branch, if exists. It does not mean much if
the repository is not associated with any working tree
- (i.e. 'naked' repository), but a valid git repository
+ (i.e. a 'bare' repository), but a valid git repository
*must* have such a symlink here. It is legal if the
named branch 'name' does not (yet) exist.
@@ -92,7 +92,7 @@ hooks::
index::
The current index file for the repository. It is
- usually not found in a naked repository.
+ usually not found in a bare repository.
info::
Additional information about the repository is recorded
diff --git a/connect.c b/connect.c
index d6f4e4c3a7..e1c04e1eae 100644
--- a/connect.c
+++ b/connect.c
@@ -644,10 +644,16 @@ int git_connect(int fd[2], char *url, const char *prog)
ssh_basename++;
execlp(ssh, ssh_basename, host, command, NULL);
}
- else
+ else {
+ unsetenv(ALTERNATE_DB_ENVIRONMENT);
+ unsetenv(DB_ENVIRONMENT);
+ unsetenv(GIT_DIR_ENVIRONMENT);
+ unsetenv(GRAFT_ENVIRONMENT);
+ unsetenv(INDEX_ENVIRONMENT);
execlp("sh", "sh", "-c", command, NULL);
+ }
die("exec failed");
- }
+ }
fd[0] = pipefd[0][0];
fd[1] = pipefd[1][1];
close(pipefd[0][1]);
diff --git a/git-clone.sh b/git-clone.sh
index ded40856c5..47f3ec9761 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -9,7 +9,7 @@
unset CDPATH
usage() {
- echo >&2 "Usage: $0 [--naked] [-l [-s]] [-q] [-u <upload-pack>] [-o <name>] [-n] <repo> [<dir>]"
+ echo >&2 "Usage: $0 [--bare] [-l [-s]] [-q] [-u <upload-pack>] [-o <name>] [-n] <repo> [<dir>]"
exit 1
}
@@ -53,15 +53,17 @@ use_local=no
local_shared=no
no_checkout=
upload_pack=
-naked=
+bare=
origin=origin
+origin_override=
while
case "$#,$1" in
0,*) break ;;
*,-n|*,--no|*,--no-|*,--no-c|*,--no-ch|*,--no-che|*,--no-chec|\
*,--no-check|*,--no-checko|*,--no-checkou|*,--no-checkout)
no_checkout=yes ;;
- *,--na|*,--nak|*,--nake|*,--naked) naked=yes ;;
+ *,--na|*,--nak|*,--nake|*,--naked|\
+ *,-b|*,--b|*,--ba|*,--bar|*,--bare) bare=yes ;;
*,-l|*,--l|*,--lo|*,--loc|*,--loca|*,--local) use_local=yes ;;
*,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared)
local_shared=yes; use_local=yes ;;
@@ -72,6 +74,11 @@ while
echo >&2 "'$2' is not suitable for a branch name"
exit 1
}
+ test -z "$origin_override" || {
+ echo >&2 "Do not give more than one -o options."
+ exit 1
+ }
+ origin_override=yes
origin="$2"; shift
;;
1,-u|1,--upload-pack) usage ;;
@@ -85,8 +92,16 @@ do
shift
done
-# --naked implies --no-checkout
-test -z "$naked" || no_checkout=yes
+# --bare implies --no-checkout
+if test yes = "$bare"
+then
+ if test yes = "$origin_override"
+ then
+ echo >&2 '--bare and -o $origin options are incompatible.'
+ exit 1
+ fi
+ no_checkout=yes
+fi
# Turn the source into an absolute path if
# it is local
@@ -103,11 +118,11 @@ dir="$2"
[ -e "$dir" ] && echo "$dir already exists." && usage
mkdir -p "$dir" &&
D=$(cd "$dir" && pwd) &&
-case "$naked" in
+case "$bare" in
yes) GIT_DIR="$D" ;;
*) GIT_DIR="$D/.git" ;;
esac && export GIT_DIR && git-init-db || usage
-case "$naked" in
+case "$bare" in
yes)
GIT_DIR="$D" ;;
*)
@@ -208,7 +223,7 @@ esac
cd "$D" || exit
-if test -f "$GIT_DIR/HEAD"
+if test -f "$GIT_DIR/HEAD" && test -z "$bare"
then
head_points_at=`git-symbolic-ref HEAD`
case "$head_points_at" in
diff --git a/git-fetch.sh b/git-fetch.sh
index 4a0cb32f30..6730346ba0 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -17,12 +17,20 @@ append=
force=
verbose=
update_head_ok=
+exec=
+upload_pack=
while case "$#" in 0) break ;; esac
do
case "$1" in
-a|--a|--ap|--app|--appe|--appen|--append)
append=t
;;
+ -u|--u|--up|--upl|--uploa|--upload|--upload-|--upload-p|--upload-pa|\
+ --upload-pac|--upload-pack)
+ shift
+ exec="--exec=$1"
+ upload_pack="-u $1"
+ ;;
-f|--f|--fo|--for|--forc|--force)
force=t
;;
@@ -196,7 +204,7 @@ reflist=$(get_remote_refs_for_fetch "$@")
if test "$tags"
then
taglist=$(IFS=" " &&
- git-ls-remote --tags "$remote" |
+ git-ls-remote $upload_pack --tags "$remote" |
while read sha1 name
do
case "$name" in
@@ -312,7 +320,7 @@ fetch_main () {
( : subshell because we muck with IFS
IFS=" $LF"
(
- git-fetch-pack $keep "$remote" $rref || echo failed "$remote"
+ git-fetch-pack $exec $keep "$remote" $rref || echo failed "$remote"
) |
while read sha1 remote_name
do
@@ -361,7 +369,7 @@ fetch_main "$reflist"
case "$no_tags$tags" in
'')
taglist=$(IFS=" " &&
- git-ls-remote --tags "$remote" |
+ git-ls-remote $upload_pack --tags "$remote" |
sed -ne 's|^\([0-9a-f]*\)[ ]\(refs/tags/.*\)^{}$|\1 \2|p' |
while read sha1 name
do
diff --git a/git-ls-remote.sh b/git-ls-remote.sh
index f69926862f..2c9a588d21 100755
--- a/git-ls-remote.sh
+++ b/git-ls-remote.sh
@@ -2,7 +2,8 @@
#
usage () {
- echo >&2 "usage: $0 [--heads] [--tags] <repository> <refs>..."
+ echo >&2 "usage: $0 [--heads] [--tags] [-u|--upload-pack <upload-pack>]"
+ echo >&2 " <repository> <refs>..."
exit 1;
}
@@ -11,6 +12,7 @@ die () {
exit 1
}
+exec=
while case "$#" in 0) break;; esac
do
case "$1" in
@@ -18,6 +20,11 @@ do
heads=heads; shift ;;
-t|--t|--ta|--tag|--tags)
tags=tags; shift ;;
+ -u|--u|--up|--upl|--uploa|--upload|--upload-|--upload-p|--upload-pa|\
+ --upload-pac|--upload-pack)
+ shift
+ exec="--exec=$1"
+ shift;;
--)
shift; break ;;
-*)
@@ -66,7 +73,7 @@ rsync://* )
;;
* )
- git-peek-remote "$peek_repo" ||
+ git-peek-remote $exec "$peek_repo" ||
echo "failed slurping"
;;
esac |