feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
127
api.hyungi.net/node_modules/js-git/doc/lib/object-codec.md
generated
vendored
Normal file
127
api.hyungi.net/node_modules/js-git/doc/lib/object-codec.md
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
# Object Codec
|
||||
|
||||
This module implements a codec for the binary git object format for blobs, trees, tags, and commits.
|
||||
|
||||
This library is useful for writing new storage backends. Normal users will probably
|
||||
just use one of the existing mixins for object storage.
|
||||
|
||||
## codec.frame({type,body}) -> buffer
|
||||
|
||||
This function accepts an object with `type` and `body` properties. The `type`
|
||||
property must be one of "blob", "tree", "commit" or "tag". The body can be a
|
||||
pre-encoded raw-buffer or a plain javascript value. See encoder docs below for
|
||||
the formats of the different body types.
|
||||
|
||||
The returned binary value is the fully framed git object. The sha1 of this is
|
||||
the git hash of the object.
|
||||
|
||||
```js
|
||||
var codec = require('js-git/lib/object-codec');
|
||||
var sha1 = require('git-sha1');
|
||||
|
||||
var bin = codec.frame({ type: "blob", body: "Hello World\n"});
|
||||
var hash = sha1(bin);
|
||||
```
|
||||
|
||||
## codec.deframe(buffer, decode) -> {type,body}
|
||||
|
||||
This function accepts a binary git buffer and returns the `{type,body}` object.
|
||||
|
||||
If `decode` is true, then the body will also be decoded into a normal javascript
|
||||
value. If `decode` is false or missing, then the raw-buffer will be in body.
|
||||
|
||||
## codec.encoders
|
||||
|
||||
This is an object containing 4 encoder function Each function has the signature:
|
||||
|
||||
encode(body) -> raw-buffer
|
||||
|
||||
Where body is the JS representation of the type and raw-buffer is the git encoded
|
||||
version of that value, but without the type and length framing.
|
||||
|
||||
```js
|
||||
var encoders = require('js-git/lib/object-codec').encoders;
|
||||
var modes = require('js-git/lib/modes');
|
||||
```
|
||||
|
||||
Blobs must be native binary values (Buffer in node, Uint8Array in browser).
|
||||
It's recommended to either use the `bodec` library to create binary values from
|
||||
strings directly or configure your system with the `formats` mixin that allows
|
||||
for unicode strings when working with blobs.
|
||||
|
||||
```js
|
||||
rawBin = encoders.blob(new Uint8Array([1,2,3,4,5,6]));
|
||||
rawBin = encoders.blob(bodec.fromUnicode("Hello World"));
|
||||
```
|
||||
|
||||
Trees are objects with filename as key and object with {mode,hash} as value.
|
||||
The modes are integers. It's best to use the modes module to help.
|
||||
|
||||
```js
|
||||
rawBin = encoders.tree({ "greeting.txt": {
|
||||
mode: modes.file,
|
||||
hash: blobHash
|
||||
}});
|
||||
```
|
||||
|
||||
Commits are objects with required fields {tree,author,message}
|
||||
Also if there is a single parent, you specify it with `parent`.
|
||||
|
||||
Since a commit can have zero or more parent commits, you specify the parent
|
||||
hashes via the `parents` property as an array of hashes.
|
||||
|
||||
The `author` field is required and contains {name,email,date}.
|
||||
|
||||
Commits also require a `committer` field with the same structure as `author`.
|
||||
|
||||
The `date` property of `author` and `committer` is in the format {seconds,offset}
|
||||
Where seconds is a unix timestamp in seconds and offset is the number of minutes
|
||||
offset for the timezone. (Your local offset can be found with `(new Date).getTimezoneOffset()`)
|
||||
|
||||
The `message` field is mandatory and a simple string.
|
||||
|
||||
```js
|
||||
rawBin = encoders.commit({
|
||||
tree: treeHash,
|
||||
author: {
|
||||
name: "Tim Caswell",
|
||||
email: "tim@creationix.com",
|
||||
date: {
|
||||
seconds: 1391790910,
|
||||
offset: 7 * 60
|
||||
}
|
||||
},
|
||||
parents: [ parentCommitHash ],
|
||||
message: "This is a test commit\n"
|
||||
});
|
||||
```
|
||||
|
||||
Annotated tags are like commits, except they have different fields.
|
||||
|
||||
```js
|
||||
rawBin = encoders.tag({
|
||||
object: commitHash,
|
||||
type: "commit",
|
||||
tag: "mytag",
|
||||
tagger: {
|
||||
name: "Tim Caswell",
|
||||
email: "tim@creationix.com",
|
||||
date: {
|
||||
seconds: 1391790910,
|
||||
offset: 7 * 60
|
||||
}
|
||||
},
|
||||
message: "Tag it!\n"
|
||||
});
|
||||
```
|
||||
|
||||
## codec.decoders
|
||||
|
||||
This is just like `codec.encoders` except these functions do the opposite.
|
||||
They have the format:
|
||||
|
||||
decode(raw-buffer) -> body
|
||||
|
||||
```js
|
||||
var commit = decoders.commit(rawCommitBin);
|
||||
```
|
||||
Reference in New Issue
Block a user