aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plumbing/format/index/decoder.go11
-rw-r--r--plumbing/format/index/decoder_test.go7
2 files changed, 12 insertions, 6 deletions
diff --git a/plumbing/format/index/decoder.go b/plumbing/format/index/decoder.go
index 9069c9e..aba5fe8 100644
--- a/plumbing/format/index/decoder.go
+++ b/plumbing/format/index/decoder.go
@@ -112,8 +112,15 @@ func (d *Decoder) readEntry(idx *Index) (*Entry, error) {
}
read := entryHeaderLength
- e.CreatedAt = time.Unix(int64(sec), int64(nsec))
- e.ModifiedAt = time.Unix(int64(msec), int64(mnsec))
+
+ if sec != 0 || nsec != 0 {
+ e.CreatedAt = time.Unix(int64(sec), int64(nsec))
+ }
+
+ if msec != 0 || mnsec != 0 {
+ e.ModifiedAt = time.Unix(int64(msec), int64(mnsec))
+ }
+
e.Stage = Stage(flags>>12) & 0x3
if flags&entryExtended != 0 {
diff --git a/plumbing/format/index/decoder_test.go b/plumbing/format/index/decoder_test.go
index 4614701..47a8186 100644
--- a/plumbing/format/index/decoder_test.go
+++ b/plumbing/format/index/decoder_test.go
@@ -41,6 +41,7 @@ func (s *IndexSuite) TestDecodeEntries(c *C) {
c.Assert(idx.Entries, HasLen, 9)
e := idx.Entries[0]
+
c.Assert(e.CreatedAt.Unix(), Equals, int64(1480626693))
c.Assert(e.CreatedAt.Nanosecond(), Equals, 498593596)
c.Assert(e.ModifiedAt.Unix(), Equals, int64(1480626693))
@@ -111,10 +112,8 @@ func (s *IndexSuite) TestDecodeMergeConflict(c *C) {
// stagged files
for i, e := range idx.Entries[4:7] {
c.Assert(e.Stage, Equals, expected[i].Stage)
- c.Assert(e.CreatedAt.Unix(), Equals, int64(0))
- c.Assert(e.CreatedAt.Nanosecond(), Equals, 0)
- c.Assert(e.ModifiedAt.Unix(), Equals, int64(0))
- c.Assert(e.ModifiedAt.Nanosecond(), Equals, 0)
+ c.Assert(e.CreatedAt.IsZero(), Equals, true)
+ c.Assert(e.ModifiedAt.IsZero(), Equals, true)
c.Assert(e.Dev, Equals, uint32(0))
c.Assert(e.Inode, Equals, uint32(0))
c.Assert(e.UID, Equals, uint32(0))