aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorGravatar Runxi Yu2025-11-29 16:31:26 +0800
committerGravatar Runxi Yu2025-11-29 16:31:26 +0800
commit2f8f740ea1835bb8001be655d3d5e71b51f123c1 (patch)
tree0d28d6040980dbbb83c0d27bf4c45fb15992cfa1 /cmd
parentobj_tree: Fix Entry sorting (diff)
signatureNo signature
show-object: Utility to show an arbitrary object from a repo
Diffstat (limited to 'cmd')
-rw-r--r--cmd/show-object/main.go37
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)
+}