diff mbox series

[v3,2/3] bundle doc: split out thin v.s. not discussion from <rev-arg>

Message ID patch-2.3-63f871a0c72-20210624T193730Z-avarab@gmail.com (mailing list archive)
State New, archived
Headers show
Series bundle doc: generaliz & elaborate | expand

Commit Message

Ævar Arnfjörð Bjarmason June 24, 2021, 7:40 p.m. UTC
Split out the discussion of why you should or should not create "thin
bundles" into a new section, away from the discussion of our handling
of the rev-args syntax.

See 2e0afafebd (Add git-bundle: move objects and references by
archive, 2007-02-22) for the introduction of the documentation being
changed here.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 Documentation/git-bundle.txt | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

Comments

Junio C Hamano June 29, 2021, 4:52 a.m. UTC | #1
Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:

> Split out the discussion of why you should or should not create "thin
> bundles" into a new section, away from the discussion of our handling
> of the rev-args syntax.
>
> See 2e0afafebd (Add git-bundle: move objects and references by
> archive, 2007-02-22) for the introduction of the documentation being
> changed here.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  Documentation/git-bundle.txt | 23 +++++++++++++++++++++--
>  1 file changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt
> index 1b02f8b7468..f231f42b12f 100644
> --- a/Documentation/git-bundle.txt
> +++ b/Documentation/git-bundle.txt
> @@ -42,7 +42,8 @@ header indicating what references are contained within the bundle. The
>  header is (mostly) in the format emitted by linkgit:git-show-ref[1].
>  
>  Like the the packed archive format itself bundles can either be
> -self-contained or thin (see "--thin" in linkgit:git-pack-objects[1]).
> +self-contained or thin, see the "OPEN (THIN) AND CLOSED BUNDLES"
> +section below.
>  
>  See link:technical/bundle-format.html[the `bundle-format`
>  documentation] for more details.
> @@ -139,7 +140,20 @@ contained in the union of the given bases.  Each basis can be
>  specified explicitly (e.g. `^master~10`), or implicitly (e.g.
>  `master~10..master`, `--since=10.days.ago master`).
>  
> -It is very important that the basis used be held by the destination.
> +OPEN (THIN) AND CLOSED BUNDLES
> +------------------------------
> +
> +When creating bundles it is possible to create bundle tips that are
> +either closed or open under reachability, i.e. those that contain all
> +the history needed to get to a given point (closed), and those that do
> +not (open). A revision such as "master" will produce a closed tip, a
> +range such as "master~2..master" will not (unless the full history is
> +contained within that range).
> +
> +Another name for "open" bundles might be "thin bundles", as in the
> +`--thin` option to linkgit:git-pack-objects[1]. Under the hood that's
> +what `git bundle create` uses to write bundles. When thin bundles
> +it is very important that the basis used be held by the destination.

While it is true that "thin" bundle or packfile must have been
created with a commit range with an uninteresting end, presence of
the negative end in the range does not necessarily mean the
resulting packfile or bundle is thin.

If you want to introduce "open" to mean "some objects reachable from
the tip may not be present in the resulting pack/bundle", that is
perfectly fine, but "thin" is a different concept.  For a packfile
to be "thin", it has to be "open", but an "open" packfile can be
"thick".  Even though they are *not* orthogonal concepts, "thin"
packfile is a strict subset of "open" packfile.

What "thin" means is that such a packfile can store an object in a
deltified form against a base object that is not in the same
packfile.
diff mbox series

Patch

diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt
index 1b02f8b7468..f231f42b12f 100644
--- a/Documentation/git-bundle.txt
+++ b/Documentation/git-bundle.txt
@@ -42,7 +42,8 @@  header indicating what references are contained within the bundle. The
 header is (mostly) in the format emitted by linkgit:git-show-ref[1].
 
 Like the the packed archive format itself bundles can either be
-self-contained or thin (see "--thin" in linkgit:git-pack-objects[1]).
+self-contained or thin, see the "OPEN (THIN) AND CLOSED BUNDLES"
+section below.
 
 See link:technical/bundle-format.html[the `bundle-format`
 documentation] for more details.
@@ -139,7 +140,20 @@  contained in the union of the given bases.  Each basis can be
 specified explicitly (e.g. `^master~10`), or implicitly (e.g.
 `master~10..master`, `--since=10.days.ago master`).
 
-It is very important that the basis used be held by the destination.
+OPEN (THIN) AND CLOSED BUNDLES
+------------------------------
+
+When creating bundles it is possible to create bundle tips that are
+either closed or open under reachability, i.e. those that contain all
+the history needed to get to a given point (closed), and those that do
+not (open). A revision such as "master" will produce a closed tip, a
+range such as "master~2..master" will not (unless the full history is
+contained within that range).
+
+Another name for "open" bundles might be "thin bundles", as in the
+`--thin` option to linkgit:git-pack-objects[1]. Under the hood that's
+what `git bundle create` uses to write bundles. When thin bundles
+it is very important that the basis used be held by the destination.
 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.
@@ -152,6 +166,11 @@  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>`.
 
+See the the `--thin` option to linkgit:git-pack-objects[1] noted
+above, and the discussion of "thin pack" in
+link:technical/pack-format.html[the pack format documentation] for
+further details.
+
 EXAMPLES
 --------