{"thread":{"id":"31592","subject":"[PATCHv2 1/8] Doc: Bundle file usage","startedAt":"2012-09-18T23:25:27Z","lastAt":"2019-10-21T03:16:13Z","messageCount":15,"participants":["Philip Oakley","Junio C Hamano","Jeff King","Pratyush Yadav"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"199424","messageId":"1348010734-664-2-git-send-email-philipoakley@iee.org","threadId":"31592","inReplyTo":null,"subject":"[PATCHv2 1/8] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.org","sentAt":"2012-09-18T23:25:27Z","receivedAt":"2012-09-18T23:25:27Z","isPatch":false,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"Git URLs can accept bundle files for fetch, pull and clone, include\nin that section. Include git clone in the bundle usage description.\nCorrect the quoting of <git-rev-list-args>.\nDetail the <git-rev-list-args> '--all' option for cloning.\n\nSigned-off-by: Philip Oakley <philipoakley@iee.org>\n\ndiff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\nindex 16a6b0a..be6a5f1 100644\n--- a/Documentation/git-bundle.txt\n+++ b/Documentation/git-bundle.txt\n@@ -21,12 +21,12 @@ Some workflows require that one or more branches of development on one\n machine be replicated on another machine, but the two machines cannot\n be directly connected, and therefore the interactive git protocols (git,\n ssh, rsync, http) cannot be used.  This command provides support for\n-'git fetch' and 'git pull' to operate by packaging objects and references\n-in an archive at the originating machine, then importing those into\n-another repository using 'git fetch' and 'git pull'\n-after moving the archive by some means (e.g., by sneakernet).  As no\n-direct connection between the repositories exists, the user must specify a\n-basis for the bundle that is held by the destination repository: the\n+'git fetch', 'git pull' and 'git clone', to operate by packaging\n+objects and references in an archive at the originating machine, then\n+importing those into another repository using 'git fetch', 'git pull',\n+or 'git clone', after moving the archive by some means (e.g., by sneakernet).\n+As no direct connection between the repositories exists, the user must\n+specify a basis for the bundle that is held by the destination repository: the\n bundle assumes that all objects in the basis are already in the\n destination repository.\n \n@@ -35,7 +35,7 @@ OPTIONS\n \n create <file>::\n \tUsed to create a bundle named 'file'.  This requires the\n-\t'git-rev-list-args' arguments to define the bundle contents.\n+\t<git-rev-list-args> arguments to define the bundle contents.\n \n verify <file>::\n \tUsed to check that a bundle file is valid and will apply\n@@ -92,6 +92,8 @@ It is okay to err on the side of caution, causing the bundle file\n to contain objects already in the destination, as these are ignored\n when unpacking at the destination.\n \n+To create a bundle for 'git clone', use `--all` for the <git-rev-list-args>.\n+\n EXAMPLE\n -------\n \ndiff --git a/Documentation/urls.txt b/Documentation/urls.txt\nindex 2890194..2d75cce 100644\n--- a/Documentation/urls.txt\n+++ b/Documentation/urls.txt\n@@ -42,6 +42,9 @@ These two syntaxes are mostly equivalent, except the former implies\n --local option.\n endif::git-clone[]\n \n+'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n+accept a suitable bundle file. See linkgit:git-bundle[1].\n+\n When git doesn't know how to handle a certain transport protocol, it\n attempts to use the 'remote-<transport>' remote helper, if one\n exists. To explicitly request a remote helper, the following syntax\n-- \n1.7.8.msysgit.0\n"},{"id":"199434","messageId":"7vzk4mj38g.fsf@alter.siamese.dyndns.org","threadId":"31592","inReplyTo":"1348010734-664-2-git-send-email-philipoakley@iee.org","subject":"Re: [PATCHv2 1/8] Doc: Bundle file usage","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-09-18T23:55:11Z","receivedAt":"2012-09-18T23:55:11Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Philip Oakley <philipoakley@iee.org> writes:\n\n> Git URLs can accept bundle files for fetch, pull and clone, include\n> in that section. Include git clone in the bundle usage description.\n> Correct the quoting of <git-rev-list-args>.\n> Detail the <git-rev-list-args> '--all' option for cloning.\n>\n> Signed-off-by: Philip Oakley <philipoakley@iee.org>\n>\n> diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\n> index 16a6b0a..be6a5f1 100644\n> --- a/Documentation/git-bundle.txt\n> +++ b/Documentation/git-bundle.txt\n> @@ -21,12 +21,12 @@ Some workflows require that one or more branches of development on one\n>  machine be replicated on another machine, but the two machines cannot\n>  be directly connected, and therefore the interactive git protocols (git,\n>  ssh, rsync, http) cannot be used.  This command provides support for\n> -'git fetch' and 'git pull' to operate by packaging objects and references\n> -in an archive at the originating machine, then importing those into\n> -another repository using 'git fetch' and 'git pull'\n> -after moving the archive by some means (e.g., by sneakernet).  As no\n> -direct connection between the repositories exists, the user must specify a\n> -basis for the bundle that is held by the destination repository: the\n> +'git fetch', 'git pull' and 'git clone', to operate by packaging\n> +objects and references in an archive at the originating machine, then\n> +importing those into another repository using 'git fetch', 'git pull',\n> +or 'git clone', after moving the archive by some means (e.g., by sneakernet).\n> +As no direct connection between the repositories exists, the user must\n> +specify a basis for the bundle that is held by the destination repository: the\n>  bundle assumes that all objects in the basis are already in the\n>  destination repository.\n>  \n> @@ -35,7 +35,7 @@ OPTIONS\n>  \n>  create <file>::\n>  \tUsed to create a bundle named 'file'.  This requires the\n> -\t'git-rev-list-args' arguments to define the bundle contents.\n> +\t<git-rev-list-args> arguments to define the bundle contents.\n>  \n>  verify <file>::\n>  \tUsed to check that a bundle file is valid and will apply\n> @@ -92,6 +92,8 @@ It is okay to err on the side of caution, causing the bundle file\n>  to contain objects already in the destination, as these are ignored\n>  when unpacking at the destination.\n>  \n> +To create a bundle for 'git clone', use `--all` for the <git-rev-list-args>.\n> +\n\nHmm, what does this mean?  Specifically, it is not clear what \"for\n'git clone'\" exactly means.  It is not \"for use of 'git clone'\",\nbecause you should be able to create a bundle that has 'master'\nbranch without 'maint', 'next', and 'pu' and clone from it, no?\n\n\tgit checkout maint\n        git bundle create /var/tmp/1.bndl HEAD refs/heads/maint\n        cd /var/tmp && git clone 1.bndl xprm\n\nI also think \"--all\" is a bad advice for another reason.  Doesn't it\nshove refs from refs/remotes/* hierarchy in the resulting bundle?\nIt is fine for archiving purposes, but it does not seem to be a good\nadvice to create a bundle to clone from.\n\n>  EXAMPLE\n>  -------\n>  \n> diff --git a/Documentation/urls.txt b/Documentation/urls.txt\n> index 2890194..2d75cce 100644\n> --- a/Documentation/urls.txt\n> +++ b/Documentation/urls.txt\n> @@ -42,6 +42,9 @@ These two syntaxes are mostly equivalent, except the former implies\n>  --local option.\n>  endif::git-clone[]\n>  \n> +'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n> +accept a suitable bundle file. See linkgit:git-bundle[1].\n> +\n>  When git doesn't know how to handle a certain transport protocol, it\n>  attempts to use the 'remote-<transport>' remote helper, if one\n>  exists. To explicitly request a remote helper, the following syntax\n"},{"id":"384170","messageId":"20191016095737.1588-1-philipoakley@iee.email","threadId":"31592","inReplyTo":"7vzk4mj38g.fsf@alter.siamese.dyndns.org","subject":"[PATCH v2] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-16T09:57:37Z","receivedAt":"2019-10-16T10:05:59Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"From: Philip Oakley <philipoakley@iee.org>\n\nGit URLs can accept bundle files for fetch, pull and clone, include\nin that section. Include git clone in the bundle usage description.\nCorrect the quoting of <git-rev-list-args>.\nDetail the <git-rev-list-args> options for cloning a complete repo.\n\nSigned-off-by: Philip Oakley <philipoakley@iee.email>\n---\n\nThis takes up the advice from peff in \nhttps://public-inbox.org/git/20191011161112.GA19741@sigill.intra.peff.net/\nfrom the original v1 in 2012(!)\nhttps://public-inbox.org/git/1348010734-664-2-git-send-email-philipoakley@iee.org/\n\nHopefully this covers Junio's concerns from that time.\n-- \nPhilip\n\n---\n Documentation/git-bundle.txt | 10 +++++++---\n Documentation/urls.txt       |  3 +++\n 2 files changed, 10 insertions(+), 3 deletions(-)\n\ndiff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\nindex 7d6c9dcd17..0498e4895d 100644\n--- a/Documentation/git-bundle.txt\n+++ b/Documentation/git-bundle.txt\n@@ -21,9 +21,9 @@ Some workflows require that one or more branches of development on one\n machine be replicated on another machine, but the two machines cannot\n be directly connected, and therefore the interactive Git protocols (git,\n ssh, http) cannot be used.  This command provides support for\n-'git fetch' and 'git pull' to operate by packaging objects and references\n+'git fetch' and 'git pull' and 'git clone', to operate by packaging objects and references\n in an archive at the originating machine, then importing those into\n-another repository using 'git fetch' and 'git pull'\n+another repository using 'git fetch' and 'git pull' or 'git clone',\n after moving the archive by some means (e.g., by sneakernet).  As no\n direct connection between the repositories exists, the user must specify a\n basis for the bundle that is held by the destination repository: the\n@@ -35,7 +35,7 @@ OPTIONS\n \n create <file>::\n \tUsed to create a bundle named 'file'.  This requires the\n-\t'git-rev-list-args' arguments to define the bundle contents.\n+\t'<git-rev-list-args>' arguments to define the bundle contents.\n \n verify <file>::\n \tUsed to check that a bundle file is valid and will apply\n@@ -92,6 +92,10 @@ It is okay to err on the side of caution, causing the bundle file\n to contain objects already in the destination, as these are ignored\n when unpacking at the destination.\n \n+To create a bundle for 'git clone', use `--branches --tags` for\n+the <git-rev-list-args>. The (inappropriate) use of `--all` would include\n+refs from refs/remotes/* hierarchy in the resulting bundle.\n+\n EXAMPLES\n --------\n \ndiff --git a/Documentation/urls.txt b/Documentation/urls.txt\nindex bc354fe2dc..1c229d7581 100644\n--- a/Documentation/urls.txt\n+++ b/Documentation/urls.txt\n@@ -53,6 +53,9 @@ These two syntaxes are mostly equivalent, except the former implies\n --local option.\n endif::git-clone[]\n \n+'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n+accept a suitable bundle file. See linkgit:git-bundle[1].\n+\n When Git doesn't know how to handle a certain transport protocol, it\n attempts to use the 'remote-<transport>' remote helper, if one\n exists. To explicitly request a remote helper, the following syntax\n-- \n2.23.0.windows.1.21.g947f504ebe8.dirty\n\n"},{"id":"384171","messageId":"59958c50-cbcb-ae9b-614f-ba28221f41ed@iee.email","threadId":"31592","inReplyTo":"20191016095737.1588-1-philipoakley@iee.email","subject":"Re: [PATCH v2] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-16T10:15:47Z","receivedAt":"2019-10-16T10:15:51Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"On 16/10/2019 10:57, Philip Oakley wrote:\n> From: Philip Oakley <philipoakley@iee.org>\nOops - the From: line still has my old email address. Is a resend \npreferred, or can it be fixed locally?\n\nP.\n> Git URLs can accept bundle files for fetch, pull and clone, include\n> in that section. Include git clone in the bundle usage description.\n> Correct the quoting of <git-rev-list-args>.\n> Detail the <git-rev-list-args> options for cloning a complete repo.\n>\n> Signed-off-by: Philip Oakley <philipoakley@iee.email>\n> ---\n>\n> This takes up the advice from peff in\n> https://public-inbox.org/git/20191011161112.GA19741@sigill.intra.peff.net/\n> from the original v1 in 2012(!)\n> https://public-inbox.org/git/1348010734-664-2-git-send-email-philipoakley@iee.org/\n>\n> Hopefully this covers Junio's concerns from that time.\n\n"},{"id":"384215","messageId":"20191016210957.GA28981@sigill.intra.peff.net","threadId":"31592","inReplyTo":"20191016095737.1588-1-philipoakley@iee.email","subject":"Re: [PATCH v2] Doc: Bundle file usage","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2019-10-16T21:09:57Z","receivedAt":"2019-10-16T21:09:59Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Oct 16, 2019 at 10:57:37AM +0100, Philip Oakley wrote:\n\n> From: Philip Oakley <philipoakley@iee.org>\n> \n> Git URLs can accept bundle files for fetch, pull and clone, include\n> in that section. Include git clone in the bundle usage description.\n> Correct the quoting of <git-rev-list-args>.\n> Detail the <git-rev-list-args> options for cloning a complete repo.\n\nThanks for picking this up again. :)\n\nA few minor comments:\n\n> diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\n> index 7d6c9dcd17..0498e4895d 100644\n> --- a/Documentation/git-bundle.txt\n> +++ b/Documentation/git-bundle.txt\n> @@ -21,9 +21,9 @@ Some workflows require that one or more branches of development on one\n>  machine be replicated on another machine, but the two machines cannot\n>  be directly connected, and therefore the interactive Git protocols (git,\n>  ssh, http) cannot be used.  This command provides support for\n> -'git fetch' and 'git pull' to operate by packaging objects and references\n> +'git fetch' and 'git pull' and 'git clone', to operate by packaging objects and references\n\nMaybe:\n\n  'git fetch', 'git pull', and 'git clone'\n\n? Given the repetition below, though:\n\n>  in an archive at the originating machine, then importing those into\n> -another repository using 'git fetch' and 'git pull'\n> +another repository using 'git fetch' and 'git pull' or 'git clone',\n\nI wonder if we could rephrase this in a less awkward way. Perhaps:\n\n  The 'git bundle' command packages objects and references in an archive\n  at the originating machine, which can then be imported into another\n  repository using 'git fetch', 'git pull', or 'git clone'.\n\n> @@ -35,7 +35,7 @@ OPTIONS\n>  \n>  create <file>::\n>  \tUsed to create a bundle named 'file'.  This requires the\n> -\t'git-rev-list-args' arguments to define the bundle contents.\n> +\t'<git-rev-list-args>' arguments to define the bundle contents.\n\nThis hunk makes sense. I'd probably use backticks here instead of\nsingle-quotes, but I think we're pretty inconsistent across the\ndocumentation about this. It probably makes sense to match the\nexisting text.\n\n> @@ -92,6 +92,10 @@ It is okay to err on the side of caution, causing the bundle file\n>  to contain objects already in the destination, as these are ignored\n>  when unpacking at the destination.\n>  \n> +To create a bundle for 'git clone', use `--branches --tags` for\n> +the <git-rev-list-args>. The (inappropriate) use of `--all` would include\n> +refs from refs/remotes/* hierarchy in the resulting bundle.\n\nShould <git-rev-list-args> be in quotes or backticks?\n\nAny bundle created without a negative revision would be appropriate for\na clone. Maybe we could spell that out in more detail, like:\n\n  Any bundle created without negative refspecs (e.g., `new` but not\n  `old..new`) can be used on the receiving side with `git clone`. If you\n  want to provide the same set of refs that a clone directly from the\n  source repository would get, use `--branches --tags`. If you want to\n  match `git clone --mirror`, which would clone other refs such as\n  `refs/remotes/*`, use `--all`.\n\n> diff --git a/Documentation/urls.txt b/Documentation/urls.txt\n> index bc354fe2dc..1c229d7581 100644\n> --- a/Documentation/urls.txt\n> +++ b/Documentation/urls.txt\n> @@ -53,6 +53,9 @@ These two syntaxes are mostly equivalent, except the former implies\n>  --local option.\n>  endif::git-clone[]\n>  \n> +'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n> +accept a suitable bundle file. See linkgit:git-bundle[1].\n\nThis makes sense to mention here. It's a little funny because the user\nwould see this included in \"man git-clone\" or whatever, but I don't\nthink it hurts to just be exhaustive rather than trying to tailor it to\neach individual manpage.\n\n-Peff\n"},{"id":"384224","messageId":"xmqqk19484kg.fsf@gitster-ct.c.googlers.com","threadId":"31592","inReplyTo":"20191016210957.GA28981@sigill.intra.peff.net","subject":"Re: [PATCH v2] Doc: Bundle file usage","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-10-17T02:54:23Z","receivedAt":"2019-10-17T02:54:43Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> Maybe:\n>\n>   'git fetch', 'git pull', and 'git clone'\n>\n> ? Given the repetition below, though:\n\n... including this one, I think you covered everything I wanted to\nsay on the patch already.  Thanks.\n\n"},{"id":"384385","messageId":"20191018151555.2277-1-philipoakley@iee.email","threadId":"31592","inReplyTo":"20191016210957.GA28981@sigill.intra.peff.net","subject":"[PATCH v3] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-18T15:15:55Z","receivedAt":"2019-10-18T15:16:07Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"From: Philip Oakley <philipoakley@iee.org>\n\nImprove the command description, including paragraph spacing.\n\nGit URLs can accept bundle files for fetch, pull and clone, include\nin that section. Include git clone in the bundle usage description.\nCorrect the quoting of <git-rev-list-args>.\n\nDetail the <git-rev-list-args> options for cloning a complete repo.\n\nSigned-off-by: Philip Oakley <philipoakley@iee.email>\n---\nThe new paragraph uses the more modern back-ticks while elsewhere\nthe quote style is matched locally.\n\nIncludes peff's suggestions.\n---\n Documentation/git-bundle.txt | 23 +++++++++++++++++------\n Documentation/urls.txt       |  3 +++\n 2 files changed, 20 insertions(+), 6 deletions(-)\n\ndiff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\nindex 7d6c9dcd17..a441a13d58 100644\n--- a/Documentation/git-bundle.txt\n+++ b/Documentation/git-bundle.txt\n@@ -20,11 +20,14 @@ DESCRIPTION\n Some workflows require that one or more branches of development on one\n machine be replicated on another machine, but the two machines cannot\n be directly connected, and therefore the interactive Git protocols (git,\n-ssh, http) cannot be used.  This command provides support for\n-'git fetch' and 'git pull' to operate by packaging objects and references\n-in an archive at the originating machine, then importing those into\n-another repository using 'git fetch' and 'git pull'\n-after moving the archive by some means (e.g., by sneakernet).  As no\n+ssh, http) cannot be used.\n+\n+The 'git bundle' command packages objects and references in an archive\n+at the originating machine, which can then be imported into another\n+repository using 'git fetch', 'git pull', or 'git clone',\n+after moving the archive by some means (e.g., by sneakernet).\n+\n+As no\n direct connection between the repositories exists, the user must specify a\n basis for the bundle that is held by the destination repository: the\n bundle assumes that all objects in the basis are already in the\n@@ -35,7 +38,7 @@ OPTIONS\n \n create <file>::\n \tUsed to create a bundle named 'file'.  This requires the\n-\t'git-rev-list-args' arguments to define the bundle contents.\n+\t'<git-rev-list-args>' arguments to define the bundle contents.\n \n verify <file>::\n \tUsed to check that a bundle file is valid and will apply\n@@ -92,6 +95,14 @@ It is okay to err on the side of caution, causing the bundle file\n to contain objects already in the destination, as these are ignored\n when unpacking at the destination.\n \n+`git clone` can use any bundle created without negative refspecs\n+(e.g., `new`, but not `old..new`).\n+If you want to match `git clone --mirror`, which would clone other\n+refs such as `refs/remotes/*`, use `--all`.\n+If you want to provide the same set of refs that a clone directly\n+from the source repository would get, use `--branches --tags` for\n+the `<git-rev-list-args>`.\n+\n EXAMPLES\n --------\n \ndiff --git a/Documentation/urls.txt b/Documentation/urls.txt\nindex bc354fe2dc..1c229d7581 100644\n--- a/Documentation/urls.txt\n+++ b/Documentation/urls.txt\n@@ -53,6 +53,9 @@ These two syntaxes are mostly equivalent, except the former implies\n --local option.\n endif::git-clone[]\n \n+'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n+accept a suitable bundle file. See linkgit:git-bundle[1].\n+\n When Git doesn't know how to handle a certain transport protocol, it\n attempts to use the 'remote-<transport>' remote helper, if one\n exists. To explicitly request a remote helper, the following syntax\n-- \n2.23.0.windows.1.21.g947f504ebe8.dirty\n\n"},{"id":"384399","messageId":"20191018181526.6py52lp2oqkcqyp2@yadavpratyush.com","threadId":"31592","inReplyTo":"20191018151555.2277-1-philipoakley@iee.email","subject":"Re: [PATCH v3] Doc: Bundle file usage","fromName":"Pratyush Yadav","fromEmail":"me@yadavpratyush.com","sentAt":"2019-10-18T18:15:26Z","receivedAt":"2019-10-18T18:15:32Z","isPatch":true,"sender":{"key":"me@yadavpratyush.com","avatar":"https://avatars.githubusercontent.com/u/8817931?v=4"},"body":"On 18/10/19 04:15PM, Philip Oakley wrote:\n> From: Philip Oakley <philipoakley@iee.org>\n> \n> Improve the command description, including paragraph spacing.\n> \n> Git URLs can accept bundle files for fetch, pull and clone, include\n> in that section. Include git clone in the bundle usage description.\n> Correct the quoting of <git-rev-list-args>.\n> \n> Detail the <git-rev-list-args> options for cloning a complete repo.\n> \n> Signed-off-by: Philip Oakley <philipoakley@iee.email>\n\nReminder: The email in your signoff and From are different [0].\n\n[0] https://public-inbox.org/git/59958c50-cbcb-ae9b-614f-ba28221f41ed@iee.email/\n\n-- \nRegards,\nPratyush Yadav\n"},{"id":"384407","messageId":"68ef6ca5-0baf-fa30-ce0d-138a41620da6@iee.email","threadId":"31592","inReplyTo":"20191018181526.6py52lp2oqkcqyp2@yadavpratyush.com","subject":"Re: [PATCH v3] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-18T19:58:12Z","receivedAt":"2019-10-18T19:58:16Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"On 18/10/2019 19:15, Pratyush Yadav wrote:\n> On 18/10/19 04:15PM, Philip Oakley wrote:\n>> From: Philip Oakley <philipoakley@iee.org>\n>>\n>> Improve the command description, including paragraph spacing.\n>>\n>> Git URLs can accept bundle files for fetch, pull and clone, include\n>> in that section. Include git clone in the bundle usage description.\n>> Correct the quoting of <git-rev-list-args>.\n>>\n>> Detail the <git-rev-list-args> options for cloning a complete repo.\n>>\n>> Signed-off-by: Philip Oakley <philipoakley@iee.email>\n> Reminder: The email in your signoff and From are different [0].\n>\n> [0] https://public-inbox.org/git/59958c50-cbcb-ae9b-614f-ba28221f41ed@iee.email/\n>\nYes, sigh.\nI was going to complain it was all the git-gui's fault ;-) because it \ndoesn't show the current author, but then `git log` and `git show` don't \neither.\n\nI just need to revisit the man page for --amend with some form of \n--reset-author to my new email.\n\nPhilip\n[1] note to self: add a 'todo' to get git gui to show (somewhere) the \nauthor/committer that is in use for a commit or amend\n"},{"id":"384409","messageId":"20191018203052.2451-1-philipoakley@iee.email","threadId":"31592","inReplyTo":"68ef6ca5-0baf-fa30-ce0d-138a41620da6@iee.email","subject":"[PATCH v4] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-18T20:30:52Z","receivedAt":"2019-10-18T20:31:05Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"Improve the command description, including paragraph spacing.\n\nGit URLs can accept bundle files for fetch, pull and clone, include\nin that section. Include git clone in the bundle usage description.\nCorrect the quoting of <git-rev-list-args>.\n\nDetail the <git-rev-list-args> options for cloning a complete repo.\n\nSigned-off-by: Philip Oakley <philipoakley@iee.email>\n---\nThe new paragraph uses the more modern back-ticks while elsewhere\nthe quote style is matched locally.\n\nAuthor email address corrected. Thanks to Pratyush for the reminder.\n---\n Documentation/git-bundle.txt | 23 +++++++++++++++++------\n Documentation/urls.txt       |  3 +++\n 2 files changed, 20 insertions(+), 6 deletions(-)\n\ndiff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\nindex 7d6c9dcd17..a441a13d58 100644\n--- a/Documentation/git-bundle.txt\n+++ b/Documentation/git-bundle.txt\n@@ -20,11 +20,14 @@ DESCRIPTION\n Some workflows require that one or more branches of development on one\n machine be replicated on another machine, but the two machines cannot\n be directly connected, and therefore the interactive Git protocols (git,\n-ssh, http) cannot be used.  This command provides support for\n-'git fetch' and 'git pull' to operate by packaging objects and references\n-in an archive at the originating machine, then importing those into\n-another repository using 'git fetch' and 'git pull'\n-after moving the archive by some means (e.g., by sneakernet).  As no\n+ssh, http) cannot be used.\n+\n+The 'git bundle' command packages objects and references in an archive\n+at the originating machine, which can then be imported into another\n+repository using 'git fetch', 'git pull', or 'git clone',\n+after moving the archive by some means (e.g., by sneakernet).\n+\n+As no\n direct connection between the repositories exists, the user must specify a\n basis for the bundle that is held by the destination repository: the\n bundle assumes that all objects in the basis are already in the\n@@ -35,7 +38,7 @@ OPTIONS\n \n create <file>::\n \tUsed to create a bundle named 'file'.  This requires the\n-\t'git-rev-list-args' arguments to define the bundle contents.\n+\t'<git-rev-list-args>' arguments to define the bundle contents.\n \n verify <file>::\n \tUsed to check that a bundle file is valid and will apply\n@@ -92,6 +95,14 @@ It is okay to err on the side of caution, causing the bundle file\n to contain objects already in the destination, as these are ignored\n when unpacking at the destination.\n \n+`git clone` can use any bundle created without negative refspecs\n+(e.g., `new`, but not `old..new`).\n+If you want to match `git clone --mirror`, which would clone other\n+refs such as `refs/remotes/*`, use `--all`.\n+If you want to provide the same set of refs that a clone directly\n+from the source repository would get, use `--branches --tags` for\n+the `<git-rev-list-args>`.\n+\n EXAMPLES\n --------\n \ndiff --git a/Documentation/urls.txt b/Documentation/urls.txt\nindex bc354fe2dc..1c229d7581 100644\n--- a/Documentation/urls.txt\n+++ b/Documentation/urls.txt\n@@ -53,6 +53,9 @@ These two syntaxes are mostly equivalent, except the former implies\n --local option.\n endif::git-clone[]\n \n+'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n+accept a suitable bundle file. See linkgit:git-bundle[1].\n+\n When Git doesn't know how to handle a certain transport protocol, it\n attempts to use the 'remote-<transport>' remote helper, if one\n exists. To explicitly request a remote helper, the following syntax\n-- \n2.23.0.windows.1.21.g947f504ebe8.dirty\n\n"},{"id":"384466","messageId":"20191020011020.GA2980@sigill.intra.peff.net","threadId":"31592","inReplyTo":"20191018203052.2451-1-philipoakley@iee.email","subject":"Re: [PATCH v4] Doc: Bundle file usage","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2019-10-20T01:10:21Z","receivedAt":"2019-10-20T01:10:23Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Oct 18, 2019 at 09:30:52PM +0100, Philip Oakley wrote:\n\n> +`git clone` can use any bundle created without negative refspecs\n> +(e.g., `new`, but not `old..new`).\n> +If you want to match `git clone --mirror`, which would clone other\n> +refs such as `refs/remotes/*`, use `--all`.\n> +If you want to provide the same set of refs that a clone directly\n> +from the source repository would get, use `--branches --tags` for\n> +the `<git-rev-list-args>`.\n\nSince you swapped the order here of \"--mirror\" versus non-mirror, saying\n\"other refs such as...\" in the first part is confusing. We haven't\nintroduced the thing they're \"other\" from.\n\nMaybe say \"clone all refs (including ones which would be omitted by a\nnon-mirror clone, like refs/remotes/*)\" or something?\n\nOther than that, this version looks OK to me.\n\n-Peff\n"},{"id":"384472","messageId":"9e097bb2-ff3e-db5b-f0fd-0803e56b2cd6@iee.email","threadId":"31592","inReplyTo":"20191020011020.GA2980@sigill.intra.peff.net","subject":"Re: [PATCH v4] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-20T10:49:19Z","receivedAt":"2019-10-20T10:49:25Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"On 20/10/2019 02:10, Jeff King wrote:\n> On Fri, Oct 18, 2019 at 09:30:52PM +0100, Philip Oakley wrote:\n>\n>> +`git clone` can use any bundle created without negative refspecs\n>> +(e.g., `new`, but not `old..new`).\n>> +If you want to match `git clone --mirror`, which would clone other\n>> +refs such as `refs/remotes/*`, use `--all`.\n>> +If you want to provide the same set of refs that a clone directly\n>> +from the source repository would get, use `--branches --tags` for\n>> +the `<git-rev-list-args>`.\n> Since you swapped the order here of \"--mirror\" versus non-mirror, saying\n> \"other refs such as...\" in the first part is confusing. We haven't\n> introduced the thing they're \"other\" from.\n>\n> Maybe say \"clone all refs (including ones which would be omitted by a\n> non-mirror clone, like refs/remotes/*)\" or something?\n>\n> Other than that, this version looks OK to me.\n>\nI had deliberately swapped the order because of the classic human \nfallibility of only remembering the beginning and end parts, so I'd \nburied' the --mirror/--all option, leaving that important bit to the end.\n\nI'll probably simply just drop the word \"other\" (or maybe \"include cloning\")\n\nPhilip\n"},{"id":"384473","messageId":"20191020110306.1714-1-philipoakley@iee.email","threadId":"31592","inReplyTo":"9e097bb2-ff3e-db5b-f0fd-0803e56b2cd6@iee.email","subject":"[PATCH v5] Doc: Bundle file usage","fromName":"Philip Oakley","fromEmail":"philipoakley@iee.email","sentAt":"2019-10-20T11:03:06Z","receivedAt":"2019-10-20T11:03:16Z","isPatch":true,"sender":{"key":"philipoakley@iee.email","avatar":"https://avatars.githubusercontent.com/u/914343?v=4"},"body":"Improve the command description, including paragraph spacing.\n\nGit URLs can accept bundle files for fetch, pull and clone, include\nin that section. Include git clone in the bundle usage description.\nCorrect the quoting of <git-rev-list-args>.\n\nDetail the <git-rev-list-args> options for cloning a complete repo.\n\nSigned-off-by: Philip Oakley <philipoakley@iee.email>\n---\nThe new paragraph uses the more modern back-ticks while elsewhere\nthe quote style is matched locally.\n\nI finally chose the `would include your refs ..` to clarify the\n--mirror option.\n\n---\n Documentation/git-bundle.txt | 23 +++++++++++++++++------\n Documentation/urls.txt       |  3 +++\n 2 files changed, 20 insertions(+), 6 deletions(-)\n\ndiff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt\nindex 7d6c9dcd17..545940022b 100644\n--- a/Documentation/git-bundle.txt\n+++ b/Documentation/git-bundle.txt\n@@ -20,11 +20,14 @@ DESCRIPTION\n Some workflows require that one or more branches of development on one\n machine be replicated on another machine, but the two machines cannot\n be directly connected, and therefore the interactive Git protocols (git,\n-ssh, http) cannot be used.  This command provides support for\n-'git fetch' and 'git pull' to operate by packaging objects and references\n-in an archive at the originating machine, then importing those into\n-another repository using 'git fetch' and 'git pull'\n-after moving the archive by some means (e.g., by sneakernet).  As no\n+ssh, http) cannot be used.\n+\n+The 'git bundle' command packages objects and references in an archive\n+at the originating machine, which can then be imported into another\n+repository using 'git fetch', 'git pull', or 'git clone',\n+after moving the archive by some means (e.g., by sneakernet).\n+\n+As no\n direct connection between the repositories exists, the user must specify a\n basis for the bundle that is held by the destination repository: the\n bundle assumes that all objects in the basis are already in the\n@@ -35,7 +38,7 @@ OPTIONS\n \n create <file>::\n \tUsed to create a bundle named 'file'.  This requires the\n-\t'git-rev-list-args' arguments to define the bundle contents.\n+\t'<git-rev-list-args>' arguments to define the bundle contents.\n \n verify <file>::\n \tUsed to check that a bundle file is valid and will apply\n@@ -92,6 +95,14 @@ It is okay to err on the side of caution, causing the bundle file\n to contain objects already in the destination, as these are ignored\n when unpacking at the destination.\n \n+`git clone` can use any bundle created without negative refspecs\n+(e.g., `new`, but not `old..new`).\n+If you want to match `git clone --mirror`, which would include your\n+refs such as `refs/remotes/*`, use `--all`.\n+If you want to provide the same set of refs that a clone directly\n+from the source repository would get, use `--branches --tags` for\n+the `<git-rev-list-args>`.\n+\n EXAMPLES\n --------\n \ndiff --git a/Documentation/urls.txt b/Documentation/urls.txt\nindex bc354fe2dc..1c229d7581 100644\n--- a/Documentation/urls.txt\n+++ b/Documentation/urls.txt\n@@ -53,6 +53,9 @@ These two syntaxes are mostly equivalent, except the former implies\n --local option.\n endif::git-clone[]\n \n+'git clone', 'git fetch' and 'git pull', but not 'git push', will also\n+accept a suitable bundle file. See linkgit:git-bundle[1].\n+\n When Git doesn't know how to handle a certain transport protocol, it\n attempts to use the 'remote-<transport>' remote helper, if one\n exists. To explicitly request a remote helper, the following syntax\n-- \n2.23.0.windows.1.21.g947f504ebe8.dirty\n\n"},{"id":"384487","messageId":"xmqq7e4yn793.fsf@gitster-ct.c.googlers.com","threadId":"31592","inReplyTo":"20191020110306.1714-1-philipoakley@iee.email","subject":"Re: [PATCH v5] Doc: Bundle file usage","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-10-21T02:48:40Z","receivedAt":"2019-10-21T02:48:45Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Philip Oakley <philipoakley@iee.email> writes:\n\n> @@ -20,11 +20,14 @@ DESCRIPTION\n>  Some workflows require that one or more branches of development on one\n>  machine be replicated on another machine, but the two machines cannot\n>  be directly connected, and therefore the interactive Git protocols (git,\n> +ssh, http) cannot be used.\n> +\n> +The 'git bundle' command packages objects and references in an archive\n> +at the originating machine, which can then be imported into another\n> +repository using 'git fetch', 'git pull', or 'git clone',\n> +after moving the archive by some means (e.g., by sneakernet).\n> +\n> +As no\n>  direct connection between the repositories exists, the user must specify a\n>  basis for the bundle that is held by the destination repository: the\n>  bundle assumes that all objects in the basis are already in the\n\nNotice that we use the term `basis` here.  It is referring to the\nbottom end(s) of the commit graph.\n\n> +`git clone` can use any bundle created without negative refspecs\n> +(e.g., `new`, but not `old..new`).\n\nTo be consistent with the phrasing of this particular document we\nsaw earlier, you would have said \"without basis\", but I think the\nuse of `basis` did not spread beyond \"git bundle\" documentation.  \n\nIf we were writing \"git bundle\" and its documentation from scratch\nusing more modern lingo, we probably would say \"negative revisions\"\nhere.  Note that the word `refspec` has no place in the context of\nthis sentence; they are to specify the mapping of refs between the\nrepository in which transferred objects originate and the repository\nthat accept the objects.  Also note that `basis` discussed in 'git\nbundle' is a bit wider concept than `negative revisions`, so mere\nmechanical replacements would not be sufficient as a preliminary\nmodernization/prepation step for this patch.\n\n> +If you want to match `git clone --mirror`, which would include your\n> +refs such as `refs/remotes/*`, use `--all`.\n> +If you want to provide the same set of refs that a clone directly\n> +from the source repository would get, use `--branches --tags` for\n> +the `<git-rev-list-args>`.\n\nThis is not wrong per-se, but may lead to confusion.  The readers\nmust be able to learn:\n\n - \"git clone --mirror full.bndl dst/\" from a full bundle created\n   with \"git bundle create full.bndl --all\" can mimic creation of a\n   full mirror of the original.\n\n - \"git clone full.bndl dst/\" from such a bundle does *not* result\n   in creation of a mirror.\n\n - \"git clone slim.bndl dst/\" from a minimum bundle created wth \"git\n   bundle create slim.bndl --branches --tags\" would be sufficient to\n   obtain the same result as the above.\n\n - \"git clone --mirror slim.bndl dst/\" from such a minimum bundle\n   cannot mimic creation of a full mirror of the original.\n\nI am not sure the second point is conveyed well with the new\nparagraph.  That is, \"--all\" must be used if the resulting bundle is\nmeant to be usable to \"--mirror\" clone from, but it can still be\nused to clone normally.  If you do not intend to mirror-clone from,\nthere is not much point in using \"--all\" to record extra refs.\n\nNot having the new paragraph does not convey anything at all, so it\ndefinitely is an improvement, though ;-)\n\nThanks.\n\n"},{"id":"384489","messageId":"20191021031610.GA13083@sigill.intra.peff.net","threadId":"31592","inReplyTo":"xmqq7e4yn793.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH v5] Doc: Bundle file usage","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2019-10-21T03:16:10Z","receivedAt":"2019-10-21T03:16:13Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Oct 21, 2019 at 11:48:40AM +0900, Junio C Hamano wrote:\n\n> > +`git clone` can use any bundle created without negative refspecs\n> > +(e.g., `new`, but not `old..new`).\n> \n> To be consistent with the phrasing of this particular document we\n> saw earlier, you would have said \"without basis\", but I think the\n> use of `basis` did not spread beyond \"git bundle\" documentation.  \n> \n> If we were writing \"git bundle\" and its documentation from scratch\n> using more modern lingo, we probably would say \"negative revisions\"\n> here.  Note that the word `refspec` has no place in the context of\n> this sentence; they are to specify the mapping of refs between the\n> repository in which transferred objects originate and the repository\n> that accept the objects.  Also note that `basis` discussed in 'git\n> bundle' is a bit wider concept than `negative revisions`, so mere\n> mechanical replacements would not be sufficient as a preliminary\n> modernization/prepation step for this patch.\n\nSorry, this one is my fault. I said \"negative revisions\" in my earlier\nmail[1], but somehow while writing example text my brain turned into\n\"refspecs\", which is obviously nonsense. It should be \"revisions\".\n\nI don't mind using \"basis\" either; it's not commonly used outside of\nthis page, but I think it does succinctly represent what we're trying to\nsay here.\n\n[1] https://public-inbox.org/git/20191016210957.GA28981@sigill.intra.peff.net/\n\n> > +If you want to match `git clone --mirror`, which would include your\n> > +refs such as `refs/remotes/*`, use `--all`.\n> > +If you want to provide the same set of refs that a clone directly\n> > +from the source repository would get, use `--branches --tags` for\n> > +the `<git-rev-list-args>`.\n> \n> This is not wrong per-se, but may lead to confusion.  The readers\n> must be able to learn:\n> \n>  - \"git clone --mirror full.bndl dst/\" from a full bundle created\n>    with \"git bundle create full.bndl --all\" can mimic creation of a\n>    full mirror of the original.\n> \n>  - \"git clone full.bndl dst/\" from such a bundle does *not* result\n>    in creation of a mirror.\n> \n>  - \"git clone slim.bndl dst/\" from a minimum bundle created wth \"git\n>    bundle create slim.bndl --branches --tags\" would be sufficient to\n>    obtain the same result as the above.\n> \n>  - \"git clone --mirror slim.bndl dst/\" from such a minimum bundle\n>    cannot mimic creation of a full mirror of the original.\n> \n> I am not sure the second point is conveyed well with the new\n> paragraph.  That is, \"--all\" must be used if the resulting bundle is\n> meant to be usable to \"--mirror\" clone from, but it can still be\n> used to clone normally.  If you do not intend to mirror-clone from,\n> there is not much point in using \"--all\" to record extra refs.\n\nI hoped maybe it would be obvious how the second and fourth cases would\nbehave, but maybe it is better to spell it out. Maybe it would be better\nto talk about what the sender does, and then what the receiver can do\nwith the result. Something like:\n\n  If you create a bundle using `--all` for `<git-rev-list-args>`, a\n  recipient can clone the result using `git clone` or `git clone\n  --mirror` and get the same result they would by cloning directly from\n  the source repository. If you instead create it with `--branches\n  --tags`, the resulting bundle may be smaller, and a non-mirror clone\n  will behave the same (but a `clone --mirror` will obviously not\n  receive any refs outside of the branches and tags).\n\nThat could probably be tightened up a bit.\n\n-Peff\n"}]}