Skip unborn ls-refs entries · Entire

Skip unborn ls-refs entries

5d07f05→main·

pjbgf·2mo ago·2 files·+26 added/-0 removed

Changes

2

264 unmodified lines

265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293

264 unmodified lines

}\n}

func TestDecodeV2LSRefsSkipsUnbornLines(t *testing.T) {
    wire := "" +
        FormatPktLine("unborn HEAD symref-target:refs/heads/main\n") +
        FormatPktLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa refs/heads/main\n") +
        "0000"
    refs, head, err := decodeV2LSRefs(bytes.NewReader([]byte(wire)))
    if err != nil {
        t.Fatalf("decodeV2LSRefs: %v", err)
    }
    if len(refs) != 1 {
        t.Fatalf("expected 1 ref, got %d", len(refs))
    }
    if refs[0].Name().String() != refsHeadsMain {
        t.Errorf("refs[0].Name() = %q, want refs/heads/main", refs[0].Name())
    }
    if refs[0].Hash().IsZero() {
        t.Fatal("unborn line was decoded as a zero-hash ref")
    }
    if head != "" {
        t.Errorf("head target = %q, want empty", head)
    }
}

func TestDecodeV2LSRefsMalformed(t *testing.T) {
    // Line with only one field (no refname).
    wire := FormatPktLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n") + "0000"

Minternal/gitproto/fetch_test.go+23

179 unmodified lines

180
181
182
183
184
185
186
187
188

179 unmodified lines

if len(fields) < 2 {
        return nil, "", fmt.Errorf("malformed ls-refs response line %q", payload)
    }
    if fields[0] == "unborn" {
        continue
    }
    hash := plumbing.NewHash(fields[0])
    name := plumbing.ReferenceName(fields[1])
    if name == plumbing.HEAD {

Minternal/gitproto/refs.go+3