diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-07-26 00:24:27 -0400 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-07-26 00:24:27 -0400 |
commit | 8dd07c0ddd99ae626a1ec8c06f75f27fed51269f (patch) | |
tree | 261d3c9911dabc58c1ac54e4e36b3dee24d2032b /modules/git/signature.go | |
parent | 0a739cf9ac901f54484c34bba8322418dedb09b0 (diff) | |
download | gitea-8dd07c0ddd99ae626a1ec8c06f75f27fed51269f.tar.gz gitea-8dd07c0ddd99ae626a1ec8c06f75f27fed51269f.zip |
New UI merge in progress
Diffstat (limited to 'modules/git/signature.go')
-rw-r--r-- | modules/git/signature.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/git/signature.go b/modules/git/signature.go new file mode 100644 index 0000000000..20f647d266 --- /dev/null +++ b/modules/git/signature.go @@ -0,0 +1,40 @@ +// 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 ( + "bytes" + "strconv" + "time" +) + +// Author and Committer information +type Signature struct { + Email string + Name string + When time.Time +} + +// Helper to get a signature from the commit line, which looks like this: +// author Patrick Gundlach <gundlach@speedata.de> 1378823654 +0200 +// but without the "author " at the beginning (this method should) +// be used for author and committer. +// +// FIXME: include timezone! +func newSignatureFromCommitline(line []byte) (*Signature, error) { + sig := new(Signature) + emailstart := bytes.IndexByte(line, '<') + sig.Name = string(line[:emailstart-1]) + emailstop := bytes.IndexByte(line, '>') + sig.Email = string(line[emailstart+1 : emailstop]) + timestop := bytes.IndexByte(line[emailstop+2:], ' ') + timestring := string(line[emailstop+2 : emailstop+2+timestop]) + seconds, err := strconv.ParseInt(timestring, 10, 64) + if err != nil { + return nil, err + } + sig.When = time.Unix(seconds, 0) + return sig, nil +} |