зеркало из https://github.com/microsoft/git.git
[PATCH] Docs - delta object
Added delta documentation Signed-off-by: David Greaves <david@dgreaves.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
7096a645cd
Коммит
2aef5bbae9
|
@ -9,7 +9,7 @@ git-fsck-cache - Verifies the connectivity and validity of the objects in the da
|
|||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-fsck-cache' [--tags] [--root] [[--unreachable] [--cache] <object>\*]
|
||||
'git-fsck-cache' [--tags] [--root] [--delta-depth] [[--unreachable] [--cache] <object>\*]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
@ -34,6 +34,9 @@ OPTIONS
|
|||
Consider any object recorded in the cache also as a head node for
|
||||
an unreachability trace.
|
||||
|
||||
--delta-depth::
|
||||
Report back the length of the longest delta chain found.
|
||||
|
||||
It tests SHA1 and general object sanity, and it does full tracking of
|
||||
the resulting reachability and everything else. It prints out any
|
||||
corruption it finds (missing or bad objects), and if you use the
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
git-mkdelta(1)
|
||||
==============
|
||||
May 2005
|
||||
|
||||
NAME
|
||||
----
|
||||
git-mkdelta - Creates a delta object
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-mkdelta' [-v] [-d N | --max-depth=N ] <reference_object> <target_object> [ <next_object> ... ]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Creates a delta object to replace <reference_object> by using an
|
||||
ordered list of potential objects to deltafy against earlier objects
|
||||
in the list.
|
||||
|
||||
A cap on the depth of delta references can be provided as well,
|
||||
otherwise the default is to not have any limit. A limit of 0 will
|
||||
also undeltafy a given object.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-v::
|
||||
Verbose
|
||||
|
||||
-d|--max-depth::
|
||||
limit the number of delta references in a chain
|
||||
If 0 then all objects are undeltafied.
|
||||
|
||||
Author
|
||||
------
|
||||
Git is written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>.
|
||||
|
||||
Documentation
|
||||
--------------
|
||||
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the link:git.html[git] suite
|
||||
|
|
@ -51,6 +51,9 @@ link:git-init-db.html[git-init-db]::
|
|||
link:git-merge-base.html[git-merge-base]::
|
||||
Finds as good a common ancestor as possible for a merge
|
||||
|
||||
link:git-mkdelta.html[git-mkdelta]::
|
||||
Creates a delta object
|
||||
|
||||
link:git-mktag.html[git-mktag]::
|
||||
Creates a tag object
|
||||
|
||||
|
|
46
README
46
README
|
@ -32,8 +32,8 @@ build up a hierarchy of objects.
|
|||
All objects have a statically determined "type" aka "tag", which is
|
||||
determined at object creation time, and which identifies the format of
|
||||
the object (i.e. how it is used, and how it can refer to other
|
||||
objects). There are currently four different object types: "blob",
|
||||
"tree", "commit" and "tag".
|
||||
objects). There are currently five different object types: "blob",
|
||||
"tree", "commit", "tag" and "delta"
|
||||
|
||||
A "blob" object cannot refer to any other object, and is, like the tag
|
||||
implies, a pure storage object containing some user data. It is used to
|
||||
|
@ -62,13 +62,17 @@ A "tag" object symbolically identifies and can be used to sign other
|
|||
objects. It contains the identifier and type of another object, a
|
||||
symbolic name (of course!) and, optionally, a signature.
|
||||
|
||||
Regardless of object type, all objects are share the following
|
||||
characteristics: they are all in deflated with zlib, and have a header
|
||||
that not only specifies their tag, but also size information about the
|
||||
data in the object. It's worth noting that the SHA1 hash that is used
|
||||
to name the object is the hash of the original data (historical note:
|
||||
in the dawn of the age of git this was the sha1 of the _compressed_
|
||||
object)
|
||||
A "delta" object is used internally by the object database to minimise
|
||||
disk usage. Instead of storing the entire contents of a revision, git
|
||||
can behave in a similar manner to RCS et al and simply store a delta.
|
||||
|
||||
Regardless of object type, all objects share the following
|
||||
characteristics: they are all deflated with zlib, and have a header
|
||||
that not only specifies their tag, but also provides size information
|
||||
about the data in the object. It's worth noting that the SHA1 hash
|
||||
that is used to name the object is the hash of the original data or
|
||||
the delta. (Historical note: in the dawn of the age of git the hash
|
||||
was the sha1 of the _compressed_ object)
|
||||
|
||||
As a result, the general consistency of an object can always be tested
|
||||
independently of the contents or the type of the object: all objects can
|
||||
|
@ -215,6 +219,30 @@ verification) has to come from outside.
|
|||
A tag is created with link:git-mktag.html[git-mktag] and
|
||||
it's data can be accessed by link:git-cat-file.html[git-cat-file]
|
||||
|
||||
Delta Object
|
||||
~~~~~~~~~~~~
|
||||
|
||||
The "delta" object is used internally by the object database to
|
||||
minimise storage usage by using xdeltas (byte level diffs). Deltas can
|
||||
form chains of arbitrary length as RCS does (although this is
|
||||
configureable at creation time). Most operations won't see or even be
|
||||
aware of delta objects as they are automatically 'applied' and appear
|
||||
as 'real' git objects In other words, if you write your own routines
|
||||
to look at the contents of the object database then you need to know
|
||||
about this - otherwise you don't. Actually, that's not quite true -
|
||||
one important area where deltas are likely to prove very valuable is
|
||||
in reducing bandwidth loads - so the more sophisticated network tools
|
||||
for git repositories will be aware of them too.
|
||||
|
||||
Finally, git repositories can (and must) be deltafied in the
|
||||
background - the work to calculate the differences does not take place
|
||||
automatically at commit time.
|
||||
|
||||
A delta can be created (or undeltafied) with
|
||||
link:git-mkdelta.html[git-mkdelta] it's raw data cannot be accessed at
|
||||
present.
|
||||
|
||||
|
||||
The "index" aka "Current Directory Cache"
|
||||
-----------------------------------------
|
||||
The index is a simple binary file, which contains an efficient
|
||||
|
|
Загрузка…
Ссылка в новой задаче