chiark / gitweb /
cat_file: take -i/-w parameters
[topgit.git] / tg.sh
diff --git a/tg.sh b/tg.sh
index 72dc53418ade2674b4ea84e65b7f941f5f2e3bff..c77898678cdd275783746b0567a6de7edb905192 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -18,21 +18,26 @@ die()
        exit 1
 }
 
-# cat_file "topic:file"
-# Like `git cat-file blob $1`, but topics '(i)' and '(w)' means index and worktree
+# cat_file TOPIC:PATH [FROM]
+# cat the file PATH from branch TOPIC when FROM is empty.
+# FROM can be -i or -w, than the file will be from the index or worktree,
+# respectively. The caller should than ensure that HEAD is TOPIC, to make sense.
 cat_file()
 {
-       arg="$1"
-       case "$arg" in
-       '(w):'*)
-               cat "${arg#(w):}"
+       path="$1"
+       case "${2-}" in
+       -w)
+               cat "$root_dir/${path#*:}"
                ;;
-       '(i):'*)
+       -i)
                # ':file' means cat from index
-               git cat-file blob "${arg#(i)}"
+               git cat-file blob ":${path#*:}"
+               ;;
+       '')
+               git cat-file blob "$path"
                ;;
        *)
-               git cat-file blob "$arg"
+               die "Wrong argument to cat_file: '$2'"
                ;;
        esac
 }