summaryrefslogtreecommitdiffstats
path: root/man5/gitformat-bundle.5
diff options
context:
space:
mode:
Diffstat (limited to 'man5/gitformat-bundle.5')
-rw-r--r--man5/gitformat-bundle.5178
1 files changed, 178 insertions, 0 deletions
diff --git a/man5/gitformat-bundle.5 b/man5/gitformat-bundle.5
new file mode 100644
index 000000000..7960ee99e
--- /dev/null
+++ b/man5/gitformat-bundle.5
@@ -0,0 +1,178 @@
+'\" t
+.\" Title: gitformat-bundle
+.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\" Date: 08/18/2022
+.\" Manual: Git Manual
+.\" Source: Git 2.37.2.382.g795ea8776b
+.\" Language: English
+.\"
+.TH "GITFORMAT\-BUNDLE" "5" "08/18/2022" "Git 2\&.37\&.2\&.382\&.g795ea8" "Git Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+gitformat-bundle \- The bundle file format
+.SH "SYNOPSIS"
+.sp
+.nf
+*\&.bundle
+*\&.bdl
+.fi
+.sp
+.SH "DESCRIPTION"
+.sp
+The Git bundle format is a format that represents both refs and Git objects\&. A bundle is a header in a format similar to \fBgit-show-ref\fR(1) followed by a pack in *\&.pack format\&.
+.sp
+The format is created and read by the \fBgit-bundle\fR(1) command, and supported by e\&.g\&. \fBgit-fetch\fR(1) and \fBgit-clone\fR(1)\&.
+.SH "FORMAT"
+.sp
+We will use ABNF notation to define the Git bundle format\&. See \fBgitprotocol-common\fR(5) for the details\&.
+.sp
+A v2 bundle looks like this:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+bundle = signature *prerequisite *reference LF pack
+signature = "# v2 git bundle" LF
+
+prerequisite = "\-" obj\-id SP comment LF
+comment = *CHAR
+reference = obj\-id SP refname LF
+
+pack = \&.\&.\&. ; packfile
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+.sp
+A v3 bundle looks like this:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+bundle = signature *capability *prerequisite *reference LF pack
+signature = "# v3 git bundle" LF
+
+capability = "@" key ["=" value] LF
+prerequisite = "\-" obj\-id SP comment LF
+comment = *CHAR
+reference = obj\-id SP refname LF
+key = 1*(ALPHA / DIGIT / "\-")
+value = *(%01\-09 / %0b\-FF)
+
+pack = \&.\&.\&. ; packfile
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+.SH "SEMANTICS"
+.sp
+A Git bundle consists of several parts\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+"Capabilities", which are only in the v3 format, indicate functionality that the bundle requires to be read properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+"Prerequisites" lists the objects that are NOT included in the bundle and the reader of the bundle MUST already have, in order to use the data in the bundle\&. The objects stored in the bundle may refer to prerequisite objects and anything reachable from them (e\&.g\&. a tree object in the bundle can reference a blob that is reachable from a prerequisite) and/or expressed as a delta against prerequisite objects\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+"References" record the tips of the history graph, iow, what the reader of the bundle CAN "git fetch" from it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+"Pack" is the pack data stream "git fetch" would send, if you fetch from a repository that has the references recorded in the "References" above into a repository that has references pointing at the objects listed in "Prerequisites" above\&.
+.RE
+.sp
+In the bundle format, there can be a comment following a prerequisite obj\-id\&. This is a comment and it has no specific meaning\&. The writer of the bundle MAY put any string here\&. The reader of the bundle MUST ignore the comment\&.
+.SS "Note on the shallow clone and a Git bundle"
+.sp
+Note that the prerequisites does not represent a shallow\-clone boundary\&. The semantics of the prerequisites and the shallow\-clone boundaries are different, and the Git bundle v2 format cannot represent a shallow clone repository\&.
+.SH "CAPABILITIES"
+.sp
+Because there is no opportunity for negotiation, unknown capabilities cause \fIgit bundle\fR to abort\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fBobject\-format\fR
+specifies the hash algorithm in use, and can take the same values as the
+\fBextensions\&.objectFormat\fR
+configuration value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fBfilter\fR
+specifies an object filter as in the
+\fB\-\-filter\fR
+option in
+\fBgit-rev-list\fR(1)\&. The resulting pack\-file must be marked as a
+\fB\&.promisor\fR
+pack\-file after it is unbundled\&.
+.RE
+.SH "GIT"
+.sp
+Part of the \fBgit\fR(1) suite