summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/hash.rc21
-rw-r--r--scripts/tree.rc19
2 files changed, 40 insertions, 0 deletions
diff --git a/scripts/hash.rc b/scripts/hash.rc
new file mode 100644
index 00000000..9b715308
--- /dev/null
+++ b/scripts/hash.rc
@@ -0,0 +1,21 @@
+#!/bin/rc
+
+flag e +
+
+repo=$1
+out=$2
+mode=$3
+name=$4
+shift 4
+
+hash=`{
+ switch($mode) {
+ case 120???
+ printf %s $1 | git -C $repo hash-object -w --stdin
+ case 100???
+ git -C $repo hash-object -w --stdin <$1
+ }
+}
+
+printf '%s %s\t%s\n' $mode $hash $name >$out.tmp
+mv $out.tmp $out
diff --git a/scripts/tree.rc b/scripts/tree.rc
new file mode 100644
index 00000000..8d71ffe2
--- /dev/null
+++ b/scripts/tree.rc
@@ -0,0 +1,19 @@
+#!/bin/rc
+
+flag e +
+
+repo=$1
+out=$2
+shift 2
+
+ifs=() { oldpwd=`{pwd | head -c -1} }
+cd $repo
+
+git read-tree --empty
+cat $oldpwd/$* | git update-index --index-info
+tree=`{git write-tree}
+git update-ref refs/tags/tree $tree
+
+cd $oldpwd
+echo $tree >$out.tmp
+mv $out.tmp $out