git-annex/doc/internals/pointer_file.mdwn

26 lines
1.2 KiB
Text
Raw Normal View History

A pointer file is one of two ways that an annex object can be checked into
git. The other is a symbolic link pointing to a file in the
.git/annex/objects/ directory.
A pointer file starts with "/annex/objects/", which is followed
by the key (see [[key_format]]). (In some situations a pointer file
might instead contain the content of a symlink target.)
Pointer files usually have a newline after the key. This is not required.
A carriage return followed by a newline is also accepted, as is end of file.
After that, there is usually nothing more in a pointer file, but git-annex
does support pointer files with additional text on subsequent lines.
Every such subsequent line has to contain "/annex/" somewhere in it,
and end in a newline. Otherwise it not considered to be a valid pointer file.
The maximum size of a pointer file is 32 kb. If it is any longer, it is not
considered to be a valid pointer file.
The possibility exists that a pointer file is in a working tree,
representing an annex object that is not present, and something appends
data onto it accidentally. The limitation that each line of a valid
pointer file contains "/annex/" and that it cannot be larger than 32kb
let such a situation be detected.