mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
[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:
parent
7096a645cd
commit
2aef5bbae9
|
@ -9,7 +9,7 @@ git-fsck-cache - Verifies the connectivity and validity of the objects in the da
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
'git-fsck-cache' [--tags] [--root] [[--unreachable] [--cache] <object>\*]
|
'git-fsck-cache' [--tags] [--root] [--delta-depth] [[--unreachable] [--cache] <object>\*]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -34,6 +34,9 @@ OPTIONS
|
||||||
Consider any object recorded in the cache also as a head node for
|
Consider any object recorded in the cache also as a head node for
|
||||||
an unreachability trace.
|
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
|
It tests SHA1 and general object sanity, and it does full tracking of
|
||||||
the resulting reachability and everything else. It prints out any
|
the resulting reachability and everything else. It prints out any
|
||||||
corruption it finds (missing or bad objects), and if you use the
|
corruption it finds (missing or bad objects), and if you use the
|
||||||
|
|
45
Documentation/git-mkdelta.txt
Normal file
45
Documentation/git-mkdelta.txt
Normal file
|
@ -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]::
|
link:git-merge-base.html[git-merge-base]::
|
||||||
Finds as good a common ancestor as possible for a merge
|
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]::
|
link:git-mktag.html[git-mktag]::
|
||||||
Creates a tag object
|
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
|
All objects have a statically determined "type" aka "tag", which is
|
||||||
determined at object creation time, and which identifies the format of
|
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
|
the object (i.e. how it is used, and how it can refer to other
|
||||||
objects). There are currently four different object types: "blob",
|
objects). There are currently five different object types: "blob",
|
||||||
"tree", "commit" and "tag".
|
"tree", "commit", "tag" and "delta"
|
||||||
|
|
||||||
A "blob" object cannot refer to any other object, and is, like the tag
|
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
|
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
|
objects. It contains the identifier and type of another object, a
|
||||||
symbolic name (of course!) and, optionally, a signature.
|
symbolic name (of course!) and, optionally, a signature.
|
||||||
|
|
||||||
Regardless of object type, all objects are share the following
|
A "delta" object is used internally by the object database to minimise
|
||||||
characteristics: they are all in deflated with zlib, and have a header
|
disk usage. Instead of storing the entire contents of a revision, git
|
||||||
that not only specifies their tag, but also size information about the
|
can behave in a similar manner to RCS et al and simply store a delta.
|
||||||
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:
|
Regardless of object type, all objects share the following
|
||||||
in the dawn of the age of git this was the sha1 of the _compressed_
|
characteristics: they are all deflated with zlib, and have a header
|
||||||
object)
|
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
|
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
|
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
|
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]
|
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" aka "Current Directory Cache"
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
The index is a simple binary file, which contains an efficient
|
The index is a simple binary file, which contains an efficient
|
||||||
|
|
Loading…
Reference in a new issue