From 6cdf75c5a9e1f660aa2a86938be680c5db07ffd2 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 21 Feb 2026 11:33:40 +0800 Subject: refstore: Add ref shortening --- refstore/chain/chain.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'refstore/chain') diff --git a/refstore/chain/chain.go b/refstore/chain/chain.go index b84aac55..0a78dc94 100644 --- a/refstore/chain/chain.go +++ b/refstore/chain/chain.go @@ -102,6 +102,30 @@ func (chain *Chain) List(pattern string) ([]ref.Ref, error) { return refs, nil } +// Shorten shortens a full reference name using the chain-visible namespace. +func (chain *Chain) Shorten(name string) (string, error) { + refs, err := chain.List("") + if err != nil { + return "", err + } + names := make([]string, 0, len(refs)) + found := false + for _, entry := range refs { + if entry == nil { + continue + } + full := entry.Name() + names = append(names, full) + if full == name { + found = true + } + } + if !found { + return "", refstore.ErrReferenceNotFound + } + return refstore.ShortenName(name, names), nil +} + // Close closes all backends and joins close errors. func (chain *Chain) Close() error { var errs []error -- cgit v1.3.1-10-gc9f91