зеркало из https://github.com/microsoft/git.git
tar-tree: remove deprecated command
"git tar-tree" has been a thin wrapper around "git archive" since commit
fd88d9c
(Remove upload-tar and make git-tar-tree a thin wrapper to
git-archive, 2006-09-24), which also made it print a message indicating
that git-tar-tree is deprecated.
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
eb8e7e1d9a
Коммит
925ceccf05
|
@ -158,7 +158,6 @@
|
|||
/git-svn
|
||||
/git-symbolic-ref
|
||||
/git-tag
|
||||
/git-tar-tree
|
||||
/git-unpack-file
|
||||
/git-unpack-objects
|
||||
/git-update-index
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
git-tar-tree(1)
|
||||
===============
|
||||
|
||||
NAME
|
||||
----
|
||||
git-tar-tree - Create a tar archive of the files in the named tree object
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git tar-tree' [--remote=<repo>] <tree-ish> [ <base> ]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
THIS COMMAND IS DEPRECATED. Use 'git archive' with `--format=tar`
|
||||
option instead (and move the <base> argument to `--prefix=base/`).
|
||||
|
||||
Creates a tar archive containing the tree structure for the named tree.
|
||||
When <base> is specified it is added as a leading path to the files in the
|
||||
generated tar archive.
|
||||
|
||||
'git tar-tree' behaves differently when given a tree ID versus when given
|
||||
a commit ID or tag ID. In the first case the current time is used as
|
||||
modification time of each file in the archive. In the latter case the
|
||||
commit time as recorded in the referenced commit object is used instead.
|
||||
Additionally the commit ID is stored in a global extended pax header.
|
||||
It can be extracted using 'git get-tar-commit-id'.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
<tree-ish>::
|
||||
The tree or commit to produce tar archive for. If it is
|
||||
the object name of a commit object.
|
||||
|
||||
<base>::
|
||||
Leading path to the files in the resulting tar archive.
|
||||
|
||||
--remote=<repo>::
|
||||
Instead of making a tar archive from local repository,
|
||||
retrieve a tar archive from a remote repository.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
tar.umask::
|
||||
This variable can be used to restrict the permission bits of
|
||||
tar archive entries. The default is 0002, which turns off the
|
||||
world write bit. The special value "user" indicates that the
|
||||
archiving user's umask will be used instead. See umask(2) for
|
||||
details.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
`git tar-tree HEAD junk | (cd /var/tmp/ && tar xf -)`::
|
||||
|
||||
Create a tar archive that contains the contents of the
|
||||
latest commit on the current branch, and extracts it in
|
||||
`/var/tmp/junk` directory.
|
||||
|
||||
`git tar-tree v1.4.0 git-1.4.0 | gzip >git-1.4.0.tar.gz`::
|
||||
|
||||
Create a tarball for v1.4.0 release.
|
||||
|
||||
`git tar-tree v1.4.0^{tree} git-1.4.0 | gzip >git-1.4.0.tar.gz`::
|
||||
|
||||
Create a tarball for v1.4.0 release, but without a
|
||||
global extended pax header.
|
||||
|
||||
`git tar-tree --remote=example.com:git.git v1.4.0 >git-1.4.0.tar`::
|
||||
|
||||
Get a tarball v1.4.0 from example.com.
|
||||
|
||||
`git tar-tree HEAD:Documentation/ git-docs > git-1.4.0-docs.tar`::
|
||||
|
||||
Put everything in the current head's Documentation/ directory
|
||||
into 'git-1.4.0-docs.tar', with the prefix 'git-docs/'.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
|
@ -7,71 +7,9 @@
|
|||
#include "builtin.h"
|
||||
#include "quote.h"
|
||||
|
||||
static const char tar_tree_usage[] =
|
||||
"git tar-tree [--remote=<repo>] <tree-ish> [basedir]\n"
|
||||
"*** Note that this command is now deprecated; use \"git archive\" instead.";
|
||||
|
||||
static const char builtin_get_tar_commit_id_usage[] =
|
||||
"git get-tar-commit-id < <tarfile>";
|
||||
|
||||
int cmd_tar_tree(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
/*
|
||||
* "git tar-tree" is now a wrapper around "git archive --format=tar"
|
||||
*
|
||||
* $0 --remote=<repo> arg... ==>
|
||||
* git archive --format=tar --remote=<repo> arg...
|
||||
* $0 tree-ish ==>
|
||||
* git archive --format=tar tree-ish
|
||||
* $0 tree-ish basedir ==>
|
||||
* git archive --format-tar --prefix=basedir tree-ish
|
||||
*/
|
||||
const char **nargv = xcalloc(sizeof(*nargv), argc + 3);
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
char *basedir_arg;
|
||||
int nargc = 0;
|
||||
|
||||
nargv[nargc++] = "archive";
|
||||
nargv[nargc++] = "--format=tar";
|
||||
|
||||
if (2 <= argc && !prefixcmp(argv[1], "--remote=")) {
|
||||
nargv[nargc++] = argv[1];
|
||||
argv++;
|
||||
argc--;
|
||||
}
|
||||
|
||||
/*
|
||||
* Because it's just a compatibility wrapper, tar-tree supports only
|
||||
* the old behaviour of reading attributes from the work tree.
|
||||
*/
|
||||
nargv[nargc++] = "--worktree-attributes";
|
||||
|
||||
switch (argc) {
|
||||
default:
|
||||
usage(tar_tree_usage);
|
||||
break;
|
||||
case 3:
|
||||
/* base-path */
|
||||
basedir_arg = xmalloc(strlen(argv[2]) + 11);
|
||||
sprintf(basedir_arg, "--prefix=%s/", argv[2]);
|
||||
nargv[nargc++] = basedir_arg;
|
||||
/* fallthru */
|
||||
case 2:
|
||||
/* tree-ish */
|
||||
nargv[nargc++] = argv[1];
|
||||
}
|
||||
nargv[nargc] = NULL;
|
||||
|
||||
fprintf(stderr,
|
||||
"*** \"git tar-tree\" is now deprecated.\n"
|
||||
"*** Running \"git archive\" instead.\n***");
|
||||
sq_quote_argv(&sb, nargv, 0);
|
||||
strbuf_addch(&sb, '\n');
|
||||
fputs(sb.buf, stderr);
|
||||
strbuf_release(&sb);
|
||||
return cmd_archive(nargc, nargv, prefix);
|
||||
}
|
||||
|
||||
/* ustar header + extended global header content */
|
||||
#define RECORDSIZE (512)
|
||||
#define HEADERSIZE (2 * RECORDSIZE)
|
||||
|
|
|
@ -126,7 +126,6 @@ git-submodule mainporcelain
|
|||
git-svn foreignscminterface
|
||||
git-symbolic-ref plumbingmanipulators
|
||||
git-tag mainporcelain common
|
||||
git-tar-tree plumbinginterrogators deprecated
|
||||
git-unpack-file plumbinginterrogators
|
||||
git-unpack-objects plumbingmanipulators
|
||||
git-update-index plumbingmanipulators
|
||||
|
|
|
@ -706,7 +706,6 @@ __git_list_porcelain_commands ()
|
|||
ssh-*) : transport;;
|
||||
stripspace) : plumbing;;
|
||||
symbolic-ref) : plumbing;;
|
||||
tar-tree) : deprecated;;
|
||||
unpack-file) : plumbing;;
|
||||
unpack-objects) : plumbing;;
|
||||
update-index) : plumbing;;
|
||||
|
|
1
git.c
1
git.c
|
@ -437,7 +437,6 @@ static void handle_internal_command(int argc, const char **argv)
|
|||
{ "stripspace", cmd_stripspace },
|
||||
{ "symbolic-ref", cmd_symbolic_ref, RUN_SETUP },
|
||||
{ "tag", cmd_tag, RUN_SETUP },
|
||||
{ "tar-tree", cmd_tar_tree },
|
||||
{ "unpack-file", cmd_unpack_file, RUN_SETUP },
|
||||
{ "unpack-objects", cmd_unpack_objects, RUN_SETUP },
|
||||
{ "update-index", cmd_update_index, RUN_SETUP },
|
||||
|
|
|
@ -48,12 +48,12 @@ test_expect_success 'apply in reverse' '
|
|||
|
||||
test_expect_success 'setup separate repository lacking postimage' '
|
||||
|
||||
git tar-tree initial initial | $TAR xf - &&
|
||||
git archive --format=tar --prefix=initial/ initial | $TAR xf - &&
|
||||
(
|
||||
cd initial && git init && git add .
|
||||
) &&
|
||||
|
||||
git tar-tree second second | $TAR xf - &&
|
||||
git archive --format=tar --prefix=second/ second | $TAR xf - &&
|
||||
(
|
||||
cd second && git init && git add .
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2005 Rene Scharfe
|
||||
#
|
||||
|
||||
test_description='git tar-tree and git get-tar-commit-id test
|
||||
test_description='git archive and git get-tar-commit-id test
|
||||
|
||||
This test covers the topics of file contents, commit date handling and
|
||||
commit id embedding:
|
||||
|
@ -13,11 +13,11 @@ commit id embedding:
|
|||
binary file (/bin/sh). Only paths shorter than 99 characters are
|
||||
used.
|
||||
|
||||
git tar-tree applies the commit date to every file in the archive it
|
||||
git archive applies the commit date to every file in the archive it
|
||||
creates. The test sets the commit date to a specific value and checks
|
||||
if the tar archive contains that value.
|
||||
|
||||
When giving git tar-tree a commit id (in contrast to a tree id) it
|
||||
When giving git archive a commit id (in contrast to a tree id) it
|
||||
embeds this commit id into the tar archive as a comment. The test
|
||||
checks the ability of git get-tar-commit-id to figure it out from the
|
||||
tar file.
|
||||
|
@ -196,16 +196,6 @@ test_expect_success \
|
|||
'git get-tar-commit-id <b.tar >b.commitid &&
|
||||
test_cmp .git/$(git symbolic-ref HEAD) b.commitid'
|
||||
|
||||
test_expect_success 'git tar-tree' '
|
||||
git tar-tree HEAD >tar-tree.tar &&
|
||||
test_cmp b.tar tar-tree.tar
|
||||
'
|
||||
|
||||
test_expect_success 'git tar-tree with prefix' '
|
||||
git tar-tree HEAD prefix >tar-tree_with_prefix.tar &&
|
||||
test_cmp with_prefix.tar tar-tree_with_prefix.tar
|
||||
'
|
||||
|
||||
test_expect_success 'git archive with --output, override inferred format' '
|
||||
git archive --format=tar --output=d4.zip HEAD &&
|
||||
test_cmp b.tar d4.zip
|
||||
|
|
|
@ -87,14 +87,4 @@ test_expect_success 'export-subst' '
|
|||
test_cmp substfile2 archive/substfile2
|
||||
'
|
||||
|
||||
test_expect_success 'git tar-tree vs. git archive with worktree attributes' '
|
||||
git tar-tree HEAD >tar-tree.tar &&
|
||||
test_cmp worktree.tar tar-tree.tar
|
||||
'
|
||||
|
||||
test_expect_success 'git tar-tree vs. git archive with worktree attrs, bare' '
|
||||
(cd bare && git tar-tree HEAD) >bare-tar-tree.tar &&
|
||||
test_cmp bare-worktree.tar bare-tar-tree.tar
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче