當前位置: 首頁>>代碼示例>>Golang>>正文


Golang EncodedObject.Type方法代碼示例

本文整理匯總了Golang中gopkg/in/src-d/go-git/v4/plumbing.EncodedObject.Type方法的典型用法代碼示例。如果您正苦於以下問題:Golang EncodedObject.Type方法的具體用法?Golang EncodedObject.Type怎麽用?Golang EncodedObject.Type使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在gopkg/in/src-d/go-git/v4/plumbing.EncodedObject的用法示例。


在下文中一共展示了EncodedObject.Type方法的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: SetEncodedObject

func (s *Storage) SetEncodedObject(obj plumbing.EncodedObject) (plumbing.Hash, error) {
    key, err := s.buildKey(obj.Hash(), obj.Type())
    if err != nil {
        return obj.Hash(), err
    }

    r, err := obj.Reader()
    if err != nil {
        return obj.Hash(), err
    }

    c, err := ioutil.ReadAll(r)
    if err != nil {
        return obj.Hash(), err
    }

    bins := driver.BinMap{
        urlField: s.url,
        "hash":   obj.Hash().String(),
        "type":   obj.Type().String(),
        "blob":   c,
    }

    err = s.client.Put(nil, key, bins)
    return obj.Hash(), err
}
開發者ID:src-d,項目名稱:go-git,代碼行數:26,代碼來源:storage.go

示例2: Decode

// Decode transform an plumbing.EncodedObject into a Tree struct
func (t *Tree) Decode(o plumbing.EncodedObject) (err error) {
    if o.Type() != plumbing.TreeObject {
        return ErrUnsupportedObject
    }

    t.Hash = o.Hash()
    if o.Size() == 0 {
        return nil
    }

    t.Entries = nil
    t.m = nil

    reader, err := o.Reader()
    if err != nil {
        return err
    }
    defer ioutil.CheckClose(reader, &err)

    r := bufio.NewReader(reader)
    for {
        mode, err := r.ReadString(' ')
        if err != nil {
            if err == io.EOF {
                break
            }

            return err
        }

        fm, err := t.decodeFileMode(mode[:len(mode)-1])
        if err != nil && err != io.EOF {
            return err
        }

        name, err := r.ReadString(0)
        if err != nil && err != io.EOF {
            return err
        }

        var hash plumbing.Hash
        if _, err = io.ReadFull(r, hash[:]); err != nil {
            return err
        }

        baseName := name[:len(name)-1]
        t.Entries = append(t.Entries, TreeEntry{
            Hash: hash,
            Mode: fm,
            Name: baseName,
        })
    }

    return nil
}
開發者ID:src-d,項目名稱:go-git,代碼行數:56,代碼來源:tree.go

示例3: Decode

// Decode transforms a plumbing.EncodedObject into a Blob struct.
func (b *Blob) Decode(o plumbing.EncodedObject) error {
    if o.Type() != plumbing.BlobObject {
        return ErrUnsupportedObject
    }

    b.Hash = o.Hash()
    b.Size = o.Size()
    b.obj = o

    return nil
}
開發者ID:src-d,項目名稱:go-git,代碼行數:12,代碼來源:blob.go

示例4: Decode

// Decode transforms a plumbing.EncodedObject into a Tag struct.
func (t *Tag) Decode(o plumbing.EncodedObject) (err error) {
    if o.Type() != plumbing.TagObject {
        return ErrUnsupportedObject
    }

    t.Hash = o.Hash()

    reader, err := o.Reader()
    if err != nil {
        return err
    }
    defer ioutil.CheckClose(reader, &err)

    r := bufio.NewReader(reader)
    for {
        line, err := r.ReadSlice('\n')
        if err != nil && err != io.EOF {
            return err
        }

        line = bytes.TrimSpace(line)
        if len(line) == 0 {
            break // Start of message
        }

        split := bytes.SplitN(line, []byte{' '}, 2)
        switch string(split[0]) {
        case "object":
            t.Target = plumbing.NewHash(string(split[1]))
        case "type":
            t.TargetType, err = plumbing.ParseObjectType(string(split[1]))
            if err != nil {
                return err
            }
        case "tag":
            t.Name = string(split[1])
        case "tagger":
            t.Tagger.Decode(split[1])
        }

        if err == io.EOF {
            return nil
        }
    }

    data, err := stdioutil.ReadAll(r)
    if err != nil {
        return err
    }
    t.Message = string(data)

    return nil
}
開發者ID:src-d,項目名稱:go-git,代碼行數:54,代碼來源:tag.go

示例5: DecodeObject

// DecodeObject decodes an encoded object into an Object and associates it to
// the given object storer.
func DecodeObject(s storer.EncodedObjectStorer, o plumbing.EncodedObject) (Object, error) {
    switch o.Type() {
    case plumbing.CommitObject:
        return DecodeCommit(s, o)
    case plumbing.TreeObject:
        return DecodeTree(s, o)
    case plumbing.BlobObject:
        return DecodeBlob(o)
    case plumbing.TagObject:
        return DecodeTag(s, o)
    default:
        return nil, plumbing.ErrInvalidType
    }
}
開發者ID:src-d,項目名稱:go-git,代碼行數:16,代碼來源:object.go

示例6: Decode

// Decode transforms a plumbing.EncodedObject into a Commit struct.
func (c *Commit) Decode(o plumbing.EncodedObject) (err error) {
    if o.Type() != plumbing.CommitObject {
        return ErrUnsupportedObject
    }

    c.Hash = o.Hash()

    reader, err := o.Reader()
    if err != nil {
        return err
    }
    defer ioutil.CheckClose(reader, &err)

    r := bufio.NewReader(reader)

    var message bool
    for {
        line, err := r.ReadSlice('\n')
        if err != nil && err != io.EOF {
            return err
        }

        if !message {
            line = bytes.TrimSpace(line)
            if len(line) == 0 {
                message = true
                continue
            }

            split := bytes.SplitN(line, []byte{' '}, 2)
            switch string(split[0]) {
            case "tree":
                c.tree = plumbing.NewHash(string(split[1]))
            case "parent":
                c.parents = append(c.parents, plumbing.NewHash(string(split[1])))
            case "author":
                c.Author.Decode(split[1])
            case "committer":
                c.Committer.Decode(split[1])
            }
        } else {
            c.Message += string(line)
        }

        if err == io.EOF {
            return nil
        }
    }
}
開發者ID:src-d,項目名稱:go-git,代碼行數:50,代碼來源:commit.go

示例7: toObject

func (iter *ObjectIter) toObject(obj plumbing.EncodedObject) (Object, error) {
    switch obj.Type() {
    case plumbing.BlobObject:
        blob := &Blob{}
        return blob, blob.Decode(obj)
    case plumbing.TreeObject:
        tree := &Tree{s: iter.s}
        return tree, tree.Decode(obj)
    case plumbing.CommitObject:
        commit := &Commit{}
        return commit, commit.Decode(obj)
    case plumbing.TagObject:
        tag := &Tag{}
        return tag, tag.Decode(obj)
    default:
        return nil, plumbing.ErrInvalidType
    }
}
開發者ID:src-d,項目名稱:go-git,代碼行數:18,代碼來源:object.go

示例8: SetEncodedObject

func (o *ObjectStorage) SetEncodedObject(obj plumbing.EncodedObject) (plumbing.Hash, error) {
    h := obj.Hash()
    o.Objects[h] = obj

    switch obj.Type() {
    case plumbing.CommitObject:
        o.Commits[h] = o.Objects[h]
    case plumbing.TreeObject:
        o.Trees[h] = o.Objects[h]
    case plumbing.BlobObject:
        o.Blobs[h] = o.Objects[h]
    case plumbing.TagObject:
        o.Tags[h] = o.Objects[h]
    default:
        return h, ErrUnsupportedObjectType
    }

    return h, nil
}
開發者ID:src-d,項目名稱:go-git,代碼行數:19,代碼來源:storage.go

示例9: SetEncodedObject

// SetEncodedObject adds a new object to the storage.
func (s *ObjectStorage) SetEncodedObject(o plumbing.EncodedObject) (plumbing.Hash, error) {
    if o.Type() == plumbing.OFSDeltaObject || o.Type() == plumbing.REFDeltaObject {
        return plumbing.ZeroHash, plumbing.ErrInvalidType
    }

    ow, err := s.dir.NewObject()
    if err != nil {
        return plumbing.ZeroHash, err
    }

    defer ow.Close()

    or, err := o.Reader()
    if err != nil {
        return plumbing.ZeroHash, err
    }

    defer or.Close()

    if err := ow.WriteHeader(o.Type(), o.Size()); err != nil {
        return plumbing.ZeroHash, err
    }

    if _, err := io.Copy(ow, or); err != nil {
        return plumbing.ZeroHash, err
    }

    return o.Hash(), nil
}
開發者ID:src-d,項目名稱:go-git,代碼行數:30,代碼來源:object.go


注:本文中的gopkg/in/src-d/go-git/v4/plumbing.EncodedObject.Type方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。