summaryrefslogtreecommitdiff
path: root/git-inverse-archive
diff options
context:
space:
mode:
Diffstat (limited to 'git-inverse-archive')
-rwxr-xr-xgit-inverse-archive23
1 files changed, 23 insertions, 0 deletions
diff --git a/git-inverse-archive b/git-inverse-archive
new file mode 100755
index 0000000..c4b2ec7
--- /dev/null
+++ b/git-inverse-archive
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+if [ "x$1" = 'x-C' ]; then
+ git_dir=$(readlink -e "$2")
+ shift 2
+else
+ git_dir=$(pwd)
+fi
+
+if [ $# -ne 1 ] || [ ! -d "${git_dir}" ]; then
+ printf 'usage: %s [-C /dir/ec/to/ry] archive.tar\n' "${0##*/}"
+ exit 1
+fi
+
+tmp_dir=$(mktemp -d)
+trap 'cd /; rm -rf --one-file-system "${tmp_dir}"' EXIT
+
+cd "${tmp_dir}"
+git clone "${git_dir}" .
+git -C "${git_dir}" rev-parse HEAD
+
+#bsdtar -C "${tmp_dir}" -xf "$1" --strip-components 1
+find "${tmp_dir}"