Merge branches 'jc/clone', 'md/env' and 'mo/path'
authorJunio C Hamano <junkio@cox.net>
Wed, 25 Jan 2006 08:28:18 +0000 (00:28 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 25 Jan 2006 08:28:18 +0000 (00:28 -0800)
Documentation/fetch-options.txt
Documentation/git-clone.txt
Documentation/repository-layout.txt
git-clone.sh
git-fetch.sh
git-ls-remote.sh

index e624d3d..8323756 100644 (file)
@@ -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
index 8488202..684e4bd 100644 (file)
@@ -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
 ------------
 
index 0347cab..1f19bf8 100644 (file)
@@ -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
index ded4085..47f3ec9 100755 (executable)
@@ -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
index 4a0cb32..6730346 100755 (executable)
@@ -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
index f699268..2c9a588 100755 (executable)
@@ -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 |