summaryrefslogtreecommitdiff
path: root/Documentation/git-upload-archive.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/git-upload-archive.txt')
-rw-r--r--Documentation/git-upload-archive.txt51
1 files changed, 38 insertions, 13 deletions
diff --git a/Documentation/git-upload-archive.txt b/Documentation/git-upload-archive.txt
index 403871d7c6..cbef61ba88 100644
--- a/Documentation/git-upload-archive.txt
+++ b/Documentation/git-upload-archive.txt
@@ -8,30 +8,55 @@ git-upload-archive - Send archive back to git-archive
SYNOPSIS
--------
-'git-upload-archive' <directory>
+[verse]
+'git upload-archive' <directory>
DESCRIPTION
-----------
-Invoked by 'git-archive --remote' and sends a generated archive to the
-other end over the git protocol.
+Invoked by 'git archive --remote' and sends a generated archive to the
+other end over the Git protocol.
This command is usually not invoked directly by the end user. The UI
-for the protocol is on the 'git-archive' side, and the program pair
+for the protocol is on the 'git archive' side, and the program pair
is meant to be used to get an archive from a remote repository.
+SECURITY
+--------
+
+In order to protect the privacy of objects that have been removed from
+history but may not yet have been pruned, `git-upload-archive` avoids
+serving archives for commits and trees that are not reachable from the
+repository's refs. However, because calculating object reachability is
+computationally expensive, `git-upload-archive` implements a stricter
+but easier-to-check set of rules:
+
+ 1. Clients may request a commit or tree that is pointed to directly by
+ a ref. E.g., `git archive --remote=origin v1.0`.
+
+ 2. Clients may request a sub-tree within a commit or tree using the
+ `ref:path` syntax. E.g., `git archive --remote=origin v1.0:Documentation`.
+
+ 3. Clients may _not_ use other sha1 expressions, even if the end
+ result is reachable. E.g., neither a relative commit like `master^`
+ nor a literal sha1 like `abcd1234` is allowed, even if the result
+ is reachable from the refs.
+
+Note that rule 3 disallows many cases that do not have any privacy
+implications. These rules are subject to change in future versions of
+git, and the server accessed by `git archive --remote` may or may not
+follow these exact rules.
+
+If the config option `uploadArchive.allowUnreachable` is true, these
+rules are ignored, and clients may use arbitrary sha1 expressions.
+This is useful if you do not care about the privacy of unreachable
+objects, or if your object database is already publicly available for
+access via non-smart-http.
+
OPTIONS
-------
<directory>::
The repository to get a tar archive from.
-Author
-------
-Written by Franck Bui-Huu.
-
-Documentation
---------------
-Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
-
GIT
---
-Part of the gitlink:git[7] suite
+Part of the linkgit:git[1] suite