go/store/types: SerialCommitParentRefs -> SerialCommitParentAddrs.

This commit is contained in:
Aaron Son
2022-05-03 10:26:27 -07:00
parent 982ec4772f
commit ee8f41aa65
2 changed files with 13 additions and 20 deletions
+4 -11
View File
@@ -415,28 +415,21 @@ func GetCommitParents(ctx context.Context, vr types.ValueReader, cv types.Value)
if serial.GetFileID(data) != serial.CommitFileID {
return nil, errors.New("GetCommitParents: provided value is not a commit.")
}
refs, err := types.SerialCommitParentRefs(vr.Format(), sm)
if err != nil {
return nil, err
}
hashes := make([]hash.Hash, len(refs))
for i, r := range refs {
hashes[i] = r.TargetHash()
}
vals, err := vr.ReadManyValues(ctx, hashes)
addrs, err := types.SerialCommitParentAddrs(vr.Format(), sm)
vals, err := vr.ReadManyValues(ctx, addrs)
if err != nil {
return nil, err
}
res := make([]*Commit, len(vals))
for i, v := range vals {
if v == nil {
return nil, fmt.Errorf("GetCommitParents: Did not find parent Commit in ValueReader: %s", hashes[i].String())
return nil, fmt.Errorf("GetCommitParents: Did not find parent Commit in ValueReader: %s", addrs[i].String())
}
csm := serial.GetRootAsCommit([]byte(v.(types.SerialMessage)), 0)
res[i] = &Commit{
val: v,
height: csm.Height(),
addr: hashes[i],
addr: addrs[i],
}
}
return res, nil
+9 -9
View File
@@ -276,11 +276,15 @@ func (sm SerialMessage) walkRefs(nbf *NomsBinFormat, cb RefCallback) error {
return v.walkRefs(nbf, cb)
case serial.CommitFileID:
parents, err := SerialCommitParentRefs(nbf, sm)
parents, err := SerialCommitParentAddrs(nbf, sm)
if err != nil {
return err
}
for _, r := range parents {
for _, addr := range parents {
r, err := constructRef(nbf, addr, PrimitiveTypeMap[ValueKind], SerialMessageRefHeight)
if err != nil {
return err
}
if err = cb(r); err != nil {
return err
}
@@ -299,19 +303,15 @@ func (sm SerialMessage) walkRefs(nbf *NomsBinFormat, cb RefCallback) error {
return nil
}
func SerialCommitParentRefs(nbf *NomsBinFormat, sm SerialMessage) ([]Ref, error) {
func SerialCommitParentAddrs(nbf *NomsBinFormat, sm SerialMessage) ([]hash.Hash, error) {
msg := serial.GetRootAsCommit([]byte(sm), 0)
addrs := msg.ParentAddrsBytes()
n := len(addrs) / 20
ret := make([]Ref, n)
ret := make([]hash.Hash, n)
for i := 0; i < n; i++ {
addr := hash.New(addrs[:20])
addrs = addrs[20:]
r, err := constructRef(nbf, addr, PrimitiveTypeMap[ValueKind], SerialMessageRefHeight)
if err != nil {
return nil, err
}
ret[i] = r
ret[i] = addr
}
return ret, nil
}