// Copyright 2014 The Gogs Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package git import ( "encoding/hex" "errors" "fmt" "strings" ) var ( IdNotExist = errors.New("sha1 id not exist") ) type sha1 [20]byte // Return true if s has the same sha1 as caller. // Support 40-length-string, []byte, sha1 func (id sha1) Equal(s2 interface{}) bool { switch v := s2.(type) { case string: if len(v) != 40 { return false } return v == id.String() case []byte: if len(v) != 20 { return false } for i, v := range v { if id[i] != v { return false } } case sha1: for i, v := range v { if id[i] != v { return false } } default: return false } return true } // Return string (hex) representation of the Oid func (s sha1) String() string { result := make([]byte, 0, 40) hexvalues := []byte("0123456789abcdef") for i := 0; i < 20; i++ { result = append(result, hexvalues[s[i]>>4]) result = append(result, hexvalues[s[i]&0xf]) } return string(result) } // Create a new sha1 from a 20 byte slice. func NewId(b []byte) (sha1, error) { var id sha1 if len(b) != 20 { return id, errors.New("Length must be 20") } for i := 0; i < 20; i++ { id[i] = b[i] } return id, nil } // Create a new sha1 from a Sha1 string of length 40. func NewIdFromString(s string) (sha1, error) { s = strings.TrimSpace(s) var id sha1 if len(s) != 40 { return id, fmt.Errorf("Length must be 40") } b, err := hex.DecodeString(s) if err != nil { return id, err } return NewId(b) }
session(release): write data/sessions/9/b/9bb7853b27ec83a6: no space left on device
github.com/go-macaron/session@v0.0.0-20190805070824-1a3cdc6f5659/session.go:199 (0x8b2934) gopkg.in/macaron.v1@v1.3.9/context.go:79 (0x83d0a0) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:157 (0x80ab07) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:135 (0x80a8a8) gopkg.in/macaron.v1@v1.3.9/context.go:121 (0x83d1f8) gopkg.in/macaron.v1@v1.3.9/context.go:112 (0x84fdb5) gopkg.in/macaron.v1@v1.3.9/recovery.go:161 (0x84fda8) gopkg.in/macaron.v1@v1.3.9/logger.go:40 (0x840c73) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:157 (0x80ab07) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:135 (0x80a8a8) gopkg.in/macaron.v1@v1.3.9/context.go:121 (0x83d1f8) gopkg.in/macaron.v1@v1.3.9/router.go:187 (0x850fc6) gopkg.in/macaron.v1@v1.3.9/router.go:303 (0x8493e5) gopkg.in/macaron.v1@v1.3.9/macaron.go:220 (0x841fca) net/http/server.go:2836 (0x7a79b2) net/http/server.go:1924 (0x7a341b) runtime/asm_amd64.s:1373 (0x46f9f0)