diff options
| author | 2025-11-29 16:31:26 +0800 | |
|---|---|---|
| committer | 2025-11-29 16:31:26 +0800 | |
| commit | 2f8f740ea1835bb8001be655d3d5e71b51f123c1 (patch) | |
| tree | 0d28d6040980dbbb83c0d27bf4c45fb15992cfa1 /cmd | |
| parent | obj_tree: Fix Entry sorting (diff) | |
| signature | No signature | |
show-object: Utility to show an arbitrary object from a repo
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/show-object/main.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/cmd/show-object/main.go b/cmd/show-object/main.go new file mode 100644 index 00000000..287c6027 --- /dev/null +++ b/cmd/show-object/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "flag" + "fmt" + "log" + + "git.sr.ht/~runxiyu/furgit" +) + +func main() { + repoPath := flag.String("r", "", "path to repo (.git or bare)") + ref := flag.String("h", "", "ref or hash") + flag.Parse() + + if *repoPath == "" || *ref == "" { + log.Fatal("must provide -r repo and -h ref/hash") + } + + repo, err := furgit.OpenRepository(*repoPath) + if err != nil { + log.Fatalf("open repo: %v", err) + } + defer repo.Close() + + h, err := repo.ResolveRefFully(*ref) + if err != nil { + log.Fatalf("resolve ref: %v", err) + } + + obj, err := repo.ReadObject(h) + if err != nil { + log.Fatalf("read object: %v", err) + } + + fmt.Printf("%#v\n", obj) +} |
