[v4] Doc: Bundle file usage
diff mbox series

Message ID 20191018203052.2451-1-philipoakley@iee.email
State New
Headers show
Series
  • [v4] Doc: Bundle file usage
Related show

Commit Message

Philip Oakley Oct. 18, 2019, 8:30 p.m. UTC
Improve the command description, including paragraph spacing.

Git URLs can accept bundle files for fetch, pull and clone, include
in that section. Include git clone in the bundle usage description.
Correct the quoting of <git-rev-list-args>.

Detail the <git-rev-list-args> options for cloning a complete repo.

Signed-off-by: Philip Oakley <philipoakley@iee.email>
---
The new paragraph uses the more modern back-ticks while elsewhere
the quote style is matched locally.

Author email address corrected. Thanks to Pratyush for the reminder.
---
 Documentation/git-bundle.txt | 23 +++++++++++++++++------
 Documentation/urls.txt       |  3 +++
 2 files changed, 20 insertions(+), 6 deletions(-)

Comments

Jeff King Oct. 20, 2019, 1:10 a.m. UTC | #1
On Fri, Oct 18, 2019 at 09:30:52PM +0100, Philip Oakley wrote:

> +`git clone` can use any bundle created without negative refspecs
> +(e.g., `new`, but not `old..new`).
> +If you want to match `git clone --mirror`, which would clone other
> +refs such as `refs/remotes/*`, use `--all`.
> +If you want to provide the same set of refs that a clone directly
> +from the source repository would get, use `--branches --tags` for
> +the `<git-rev-list-args>`.

Since you swapped the order here of "--mirror" versus non-mirror, saying
"other refs such as..." in the first part is confusing. We haven't
introduced the thing they're "other" from.

Maybe say "clone all refs (including ones which would be omitted by a
non-mirror clone, like refs/remotes/*)" or something?

Other than that, this version looks OK to me.

-Peff
Philip Oakley Oct. 20, 2019, 10:49 a.m. UTC | #2
On 20/10/2019 02:10, Jeff King wrote:
> On Fri, Oct 18, 2019 at 09:30:52PM +0100, Philip Oakley wrote:
>
>> +`git clone` can use any bundle created without negative refspecs
>> +(e.g., `new`, but not `old..new`).
>> +If you want to match `git clone --mirror`, which would clone other
>> +refs such as `refs/remotes/*`, use `--all`.
>> +If you want to provide the same set of refs that a clone directly
>> +from the source repository would get, use `--branches --tags` for
>> +the `<git-rev-list-args>`.
> Since you swapped the order here of "--mirror" versus non-mirror, saying
> "other refs such as..." in the first part is confusing. We haven't
> introduced the thing they're "other" from.
>
> Maybe say "clone all refs (including ones which would be omitted by a
> non-mirror clone, like refs/remotes/*)" or something?
>
> Other than that, this version looks OK to me.
>
I had deliberately swapped the order because of the classic human 
fallibility of only remembering the beginning and end parts, so I'd 
buried' the --mirror/--all option, leaving that important bit to the end.

I'll probably simply just drop the word "other" (or maybe "include cloning")

Philip

Patch
diff mbox series

diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt
index 7d6c9dcd17..a441a13d58 100644
--- a/Documentation/git-bundle.txt
+++ b/Documentation/git-bundle.txt
@@ -20,11 +20,14 @@  DESCRIPTION
 Some workflows require that one or more branches of development on one
 machine be replicated on another machine, but the two machines cannot
 be directly connected, and therefore the interactive Git protocols (git,
-ssh, http) cannot be used.  This command provides support for
-'git fetch' and 'git pull' to operate by packaging objects and references
-in an archive at the originating machine, then importing those into
-another repository using 'git fetch' and 'git pull'
-after moving the archive by some means (e.g., by sneakernet).  As no
+ssh, http) cannot be used.
+
+The 'git bundle' command packages objects and references in an archive
+at the originating machine, which can then be imported into another
+repository using 'git fetch', 'git pull', or 'git clone',
+after moving the archive by some means (e.g., by sneakernet).
+
+As no
 direct connection between the repositories exists, the user must specify a
 basis for the bundle that is held by the destination repository: the
 bundle assumes that all objects in the basis are already in the
@@ -35,7 +38,7 @@  OPTIONS
 
 create <file>::
 	Used to create a bundle named 'file'.  This requires the
-	'git-rev-list-args' arguments to define the bundle contents.
+	'<git-rev-list-args>' arguments to define the bundle contents.
 
 verify <file>::
 	Used to check that a bundle file is valid and will apply
@@ -92,6 +95,14 @@  It is okay to err on the side of caution, causing the bundle file
 to contain objects already in the destination, as these are ignored
 when unpacking at the destination.
 
+`git clone` can use any bundle created without negative refspecs
+(e.g., `new`, but not `old..new`).
+If you want to match `git clone --mirror`, which would clone other
+refs such as `refs/remotes/*`, use `--all`.
+If you want to provide the same set of refs that a clone directly
+from the source repository would get, use `--branches --tags` for
+the `<git-rev-list-args>`.
+
 EXAMPLES
 --------
 
diff --git a/Documentation/urls.txt b/Documentation/urls.txt
index bc354fe2dc..1c229d7581 100644
--- a/Documentation/urls.txt
+++ b/Documentation/urls.txt
@@ -53,6 +53,9 @@  These two syntaxes are mostly equivalent, except the former implies
 --local option.
 endif::git-clone[]
 
+'git clone', 'git fetch' and 'git pull', but not 'git push', will also
+accept a suitable bundle file. See linkgit:git-bundle[1].
+
 When Git doesn't know how to handle a certain transport protocol, it
 attempts to use the 'remote-<transport>' remote helper, if one
 exists. To explicitly request a remote helper, the following syntax