Retire git-clone-pack
authorJunio C Hamano <junkio@cox.net>
Wed, 21 Jun 2006 06:54:26 +0000 (23:54 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 21 Jun 2006 09:34:14 +0000 (02:34 -0700)
The program is not used by git-clone since git-fetch-pack was extended
to allow its caller do what git-clone-pack alone did, and git-clone was
updated to use it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
.gitignore
Documentation/git-clone-pack.txt [deleted file]
Documentation/git-clone.txt
Documentation/git-receive-pack.txt
Documentation/git-upload-pack.txt
Documentation/git.txt
INSTALL
Makefile
clone-pack.c [deleted file]
index afd0876218686c14834ff27b3ad6f0da307da601..65aa939f6b2bafe5bf7c55bf38456eb28b4df0a3 100644 (file)
@@ -17,7 +17,6 @@ git-cherry
 git-cherry-pick
 git-clean
 git-clone
 git-cherry-pick
 git-clean
 git-clone
-git-clone-pack
 git-commit
 git-commit-tree
 git-convert-objects
 git-commit
 git-commit-tree
 git-convert-objects
diff --git a/Documentation/git-clone-pack.txt b/Documentation/git-clone-pack.txt
deleted file mode 100644 (file)
index 09f43ee..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-git-clone-pack(1)
-=================
-
-NAME
-----
-git-clone-pack - Clones a repository by receiving packed objects
-
-
-SYNOPSIS
---------
-'git-clone-pack' [--exec=<git-upload-pack>] [<host>:]<directory> [<head>...]
-
-DESCRIPTION
------------
-Clones a repository into the current repository by invoking
-'git-upload-pack', possibly on the remote host via ssh, in
-the named repository, and stores the sent pack in the local
-repository.
-
-OPTIONS
--------
---exec=<git-upload-pack>::
-       Use this to specify the path to 'git-upload-pack' on the
-       remote side, if it is not found on your $PATH.
-       Installations of sshd ignore the user's environment
-       setup scripts for login shells (e.g. .bash_profile) and
-       your privately installed git may not be found on the system
-       default $PATH.  Another workaround suggested is to set
-       up your $PATH in ".bashrc", but this flag is for people
-       who do not want to pay the overhead for non-interactive
-       shells by having a lean .bashrc file (they set most of
-       the things up in .bash_profile).
-
-<host>::
-       A remote host that houses the repository.  When this
-       part is specified, 'git-upload-pack' is invoked via
-       ssh.
-
-<directory>::
-       The repository to sync from.
-
-<head>...::
-       The heads to update.  This is relative to $GIT_DIR
-       (e.g. "HEAD", "refs/heads/master").  When unspecified,
-       all heads are updated to match the remote repository.
-+
-Usually all the refs from existing repository are stored
-under the same name in the new repository.  Giving explicit
-<head> arguments instead writes the object names and refs to
-the standard output, just like get-fetch-pack does.
-
-Author
-------
-Written by Linus Torvalds <torvalds@osdl.org>
-
-Documentation
---------------
-Documentation by Junio C Hamano.
-
-
-GIT
----
-Part of the gitlink:git[7] suite
-
index a90521e5139b264d1a37289966da64ea53c862cd..f973c64313699713100ba63822d80fd86979ff78 100644 (file)
@@ -62,7 +62,7 @@ OPTIONS
 --quiet::
 -q::
        Operate quietly.  This flag is passed to "rsync" and
 --quiet::
 -q::
        Operate quietly.  This flag is passed to "rsync" and
-       "git-clone-pack" commands when given.
+       "git-fetch-pack" commands when given.
 
 -n::
        No checkout of HEAD is performed after the clone is complete.
 
 -n::
        No checkout of HEAD is performed after the clone is complete.
@@ -85,7 +85,7 @@ OPTIONS
 --upload-pack <upload-pack>::
 -u <upload-pack>::
        When given, and the repository to clone from is handled
 --upload-pack <upload-pack>::
 -u <upload-pack>::
        When given, and the repository to clone from is handled
-       by 'git-clone-pack', '--exec=<upload-pack>' is passed to
+       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.
 
        the command to specify non-default path for the command
        run on the other end.
 
index 60debca48720ad54766287e8770254f57fad9d7b..f9457d45ed684597769124af945c184a7d03a948 100644 (file)
@@ -18,8 +18,7 @@ information fed from the remote end.
 This command is usually not invoked directly by the end user.
 The UI for the protocol is on the 'git-send-pack' side, and the
 program pair is meant to be used to push updates to remote
 This command is usually not invoked directly by the end user.
 The UI for the protocol is on the 'git-send-pack' side, and the
 program pair is meant to be used to push updates to remote
-repository.  For pull operations, see 'git-fetch-pack' and
-'git-clone-pack'.
+repository.  For pull operations, see 'git-fetch-pack'.
 
 The command allows for creation and fast forwarding of sha1 refs
 (heads/tags) on the remote end (strictly speaking, it is the
 
 The command allows for creation and fast forwarding of sha1 refs
 (heads/tags) on the remote end (strictly speaking, it is the
index 4795e9875441a498e225b3aec6223ab4a7a597d3..b2c9307661ebff26269cf3802a06490e0f1ba165 100644 (file)
@@ -12,7 +12,7 @@ SYNOPSIS
 
 DESCRIPTION
 -----------
 
 DESCRIPTION
 -----------
-Invoked by 'git-clone-pack' and/or 'git-fetch-pack', learns what
+Invoked by 'git-fetch-pack', learns what
 objects the other side is missing, and sends them after packing.
 
 This command is usually not invoked directly by the end user.
 objects the other side is missing, and sends them after packing.
 
 This command is usually not invoked directly by the end user.
index d4472b56d1b11227bc20b8ad3f69a3d42278dd42..51f20c6e67acb8c7eb526fac544992eaec321623 100644 (file)
@@ -192,10 +192,6 @@ the working tree.
 Synching repositories
 ~~~~~~~~~~~~~~~~~~~~~
 
 Synching repositories
 ~~~~~~~~~~~~~~~~~~~~~
 
-gitlink:git-clone-pack[1]::
-       Clones a repository into the current repository (engine
-       for ssh and local transport).
-
 gitlink:git-fetch-pack[1]::
        Updates from a remote repository (engine for ssh and
        local transport).
 gitlink:git-fetch-pack[1]::
        Updates from a remote repository (engine for ssh and
        local transport).
@@ -237,7 +233,7 @@ gitlink:git-update-server-info[1]::
        clients discover references and packs on it.
 
 gitlink:git-upload-pack[1]::
        clients discover references and packs on it.
 
 gitlink:git-upload-pack[1]::
-       Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
+       Invoked by 'git-fetch-pack' to push
        what are asked for.
 
 gitlink:git-upload-tar[1]::
        what are asked for.
 
 gitlink:git-upload-tar[1]::
diff --git a/INSTALL b/INSTALL
index 63af8eccf3ce115a992cc3f1dc812e5842e3f75f..f8337e2a4d154157ed805eeb10f52d01513f7adb 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -96,7 +96,7 @@ Issues of note:
 
        $ mkdir manual && cd manual
        $ git init-db
 
        $ mkdir manual && cd manual
        $ git init-db
-       $ git clone-pack git://git.kernel.org/pub/scm/git/git.git man html |
+       $ git fetch-pack git://git.kernel.org/pub/scm/git/git.git man html |
          while read a b
          do
            echo $a >.git/$b
          while read a b
          do
            echo $a >.git/$b
index 0887945ffa6977e49214f89be93fff4da1cd6048..ae5e8d790a8b148b95cfce03afab94e97315110a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -149,7 +149,7 @@ SIMPLE_PROGRAMS = \
 
 # ... and all the rest that could be moved out of bindir to gitexecdir
 PROGRAMS = \
 
 # ... and all the rest that could be moved out of bindir to gitexecdir
 PROGRAMS = \
-       git-checkout-index$X git-clone-pack$X \
+       git-checkout-index$X \
        git-convert-objects$X git-fetch-pack$X git-fsck-objects$X \
        git-hash-object$X git-index-pack$X git-local-fetch$X \
        git-mailinfo$X git-merge-base$X \
        git-convert-objects$X git-fetch-pack$X git-fsck-objects$X \
        git-hash-object$X git-index-pack$X git-local-fetch$X \
        git-mailinfo$X git-merge-base$X \
diff --git a/clone-pack.c b/clone-pack.c
deleted file mode 100644 (file)
index a4370f5..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-#include "cache.h"
-#include "refs.h"
-#include "pkt-line.h"
-
-static const char clone_pack_usage[] =
-"git-clone-pack [--exec=<git-upload-pack>] [<host>:]<directory> [<heads>]*";
-static const char *exec = "git-upload-pack";
-
-static int quiet = 0;
-
-static void clone_handshake(int fd[2], struct ref *ref)
-{
-       unsigned char sha1[20];
-
-       while (ref) {
-               packet_write(fd[1], "want %s\n", sha1_to_hex(ref->old_sha1));
-               ref = ref->next;
-       }
-       packet_flush(fd[1]);
-
-       /* We don't have nuttin' */
-       packet_write(fd[1], "done\n");
-       if (get_ack(fd[0], sha1))
-               error("Huh! git-clone-pack got positive ack for %s", sha1_to_hex(sha1));
-}
-
-static int is_master(struct ref *ref)
-{
-       return !strcmp(ref->name, "refs/heads/master");
-}
-
-static void write_one_ref(struct ref *ref)
-{
-       char *path = git_path("%s", ref->name);
-       int fd;
-       char *hex;
-
-       if (!strncmp(ref->name, "refs/", 5) &&
-           check_ref_format(ref->name + 5)) {
-               error("refusing to create funny ref '%s' locally", ref->name);
-               return;
-       }
-
-       if (safe_create_leading_directories(path))
-               die("unable to create leading directory for %s", ref->name);
-       fd = open(path, O_CREAT | O_EXCL | O_WRONLY, 0666);
-       if (fd < 0)
-               die("unable to create ref %s", ref->name);
-       hex = sha1_to_hex(ref->old_sha1);
-       hex[40] = '\n';
-       if (write(fd, hex, 41) != 41)
-               die("unable to write ref %s", ref->name);
-       close(fd);
-}
-
-static void write_refs(struct ref *ref)
-{
-       struct ref *head = NULL, *head_ptr, *master_ref;
-       char *head_path;
-
-       /* Upload-pack must report HEAD first */
-       if (!strcmp(ref->name, "HEAD")) {
-               head = ref;
-               ref = ref->next;
-       }
-       head_ptr = NULL;
-       master_ref = NULL;
-       while (ref) {
-               if (is_master(ref))
-                       master_ref = ref;
-               if (head &&
-                   !memcmp(ref->old_sha1, head->old_sha1, 20) &&
-                   !strncmp(ref->name, "refs/heads/",11) &&
-                   (!head_ptr || ref == master_ref))
-                       head_ptr = ref;
-
-               write_one_ref(ref);
-               ref = ref->next;
-       }
-       if (!head) {
-               fprintf(stderr, "No HEAD in remote.\n");
-               return;
-       }
-
-       head_path = strdup(git_path("HEAD"));
-       if (!head_ptr) {
-               /*
-                * If we had a master ref, and it wasn't HEAD, we need to undo the
-                * symlink, and write a standalone HEAD. Give a warning, because that's
-                * really really wrong.
-                */
-               if (master_ref) {
-                       error("HEAD doesn't point to any refs! Making standalone HEAD");
-                       unlink(head_path);
-               }
-               write_one_ref(head);
-               free(head_path);
-               return;
-       }
-
-       /* We reset to the master branch if it's available */
-       if (master_ref)
-               return;
-
-       fprintf(stderr, "Setting HEAD to %s\n", head_ptr->name);
-
-       /*
-        * Uhhuh. Other end didn't have master. We start HEAD off with
-        * the first branch with the same value.
-        */
-       if (create_symref(head_path, head_ptr->name) < 0)
-               die("unable to link HEAD to %s", head_ptr->name);
-       free(head_path);
-}
-
-static int clone_pack(int fd[2], int nr_match, char **match)
-{
-       struct ref *refs;
-       int status;
-
-       get_remote_heads(fd[0], &refs, nr_match, match, 1);
-       if (!refs) {
-               packet_flush(fd[1]);
-               die("no matching remote head");
-       }
-       clone_handshake(fd, refs);
-
-       status = receive_keep_pack(fd, "git-clone-pack", quiet);
-       if (!quiet)
-               fprintf(stderr, "\n");
-
-       if (!status) {
-               if (nr_match == 0)
-                       write_refs(refs);
-               else
-                       while (refs) {
-                               printf("%s %s\n",
-                                      sha1_to_hex(refs->old_sha1),
-                                      refs->name);
-                               refs = refs->next;
-                       }
-       }
-       return status;
-}
-
-int main(int argc, char **argv)
-{
-       int i, ret, nr_heads;
-       char *dest = NULL, **heads;
-       int fd[2];
-       pid_t pid;
-
-       setup_git_directory();
-
-       nr_heads = 0;
-       heads = NULL;
-       for (i = 1; i < argc; i++) {
-               char *arg = argv[i];
-
-               if (*arg == '-') {
-                       if (!strcmp("-q", arg)) {
-                               quiet = 1;
-                               continue;
-                       }
-                       if (!strncmp("--exec=", arg, 7)) {
-                               exec = arg + 7;
-                               continue;
-                       }
-                       usage(clone_pack_usage);
-               }
-               dest = arg;
-               heads = argv + i + 1;
-               nr_heads = argc - i - 1;
-               break;
-       }
-       if (!dest)
-               usage(clone_pack_usage);
-       pid = git_connect(fd, dest, exec);
-       if (pid < 0)
-               return 1;
-       ret = clone_pack(fd, nr_heads, heads);
-       close(fd[0]);
-       close(fd[1]);
-       finish_connect(pid);
-       return ret;
-}