summaryrefslogtreecommitdiff
path: root/scripts/tree.rc
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tree.rc')
-rw-r--r--scripts/tree.rc19
1 files changed, 12 insertions, 7 deletions
diff --git a/scripts/tree.rc b/scripts/tree.rc
index 81f641c6..bbc2bd34 100644
--- a/scripts/tree.rc
+++ b/scripts/tree.rc
@@ -9,11 +9,16 @@ out=$4
fn checkstatus {}
-wd=`{pwd}
-cd $repo
+git -C $repo read-tree --empty
+git -C $repo update-index --index-info <$index
+tree=`{git -C $repo write-tree} ; checkstatus
+git -C $repo update-ref refs/tags/$tag $tree
-git read-tree --empty
-git update-index --index-info <$wd/$index
-tree=`{git write-tree} ; checkstatus
-git update-ref refs/tags/$tag $tree
-ln -f refs/tags/$tag $wd/$out
+if([ -e $out ]) {
+ oldtree=`{cat $out} ; checkstatus
+ if(~ $tree $oldtree)
+ exit 0
+}
+
+echo $tree >$out.tmp
+mv $out.tmp $out