summaryrefslogtreecommitdiffstats
path: root/.graveyard
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2014-03-14 08:38:07 +0100
committermakefu <github@syntax-fehler.de>2014-03-14 08:38:07 +0100
commitb4f99fda9e930e101bb09674cf1b6d69393f2b1e (patch)
tree896439c283e1c324ee0858f41a30b49406df6c9b /.graveyard
parent26357c5cb98fe59b0ced568097c17e81d74db4ea (diff)
parentf92547a54d899216a4cd849ee515726824467765 (diff)
Merge branch 'master' of ssh://github.com/krebscode/painload
Diffstat (limited to '.graveyard')
-rwxr-xr-x.graveyard/git/git-clone-into48
-rwxr-xr-x.graveyard/git/git-eternal-move15
2 files changed, 63 insertions, 0 deletions
diff --git a/.graveyard/git/git-clone-into b/.graveyard/git/git-clone-into
new file mode 100755
index 00000000..67e820e6
--- /dev/null
+++ b/.graveyard/git/git-clone-into
@@ -0,0 +1,48 @@
+#! /bin/sh
+#
+# usage: git-clone-into repository directory
+#
+set -euf
+
+tempdir() {
+ set -- `tempnam $1`
+ mkdir $1
+ echo $1
+}
+
+## [prefix] -> tempnam
+tempnam() {
+ until set -- $1 ${1-}`candnam` && ! test -e $2; do :; done
+ echo $2
+}
+
+candnam() {
+ uuidgen 2>/dev/null || date +%s%N
+}
+
+
+
+ tmp_remote=`candnam`
+ tmp_branch=`candnam`
+
+ subdir=$2
+ if test -e $subdir; then
+ echo 'You are made of stupid!' >&2
+ exit 23
+ fi
+ tmpdir=`tempdir /tmp/tempdir-`
+ #trap "test -d $tmpdir && rm -vfR $tmpdir" EXIT
+ trap "test -d $tmpdir && rm -fR $tmpdir" EXIT
+ repository="${1-$repository}"
+ git clone "$repository" $tmpdir
+ (cd $tmpdir
+ subdir="$subdir" git filter-branch --tree-filter '
+ if ! test -d $subdir; then
+ mkdir -p $subdir
+ git ls-tree -z --name-only $GIT_COMMIT | xargs -I. --null mv . $subdir
+ fi
+ '
+ git checkout -b $tmp_branch)
+ git remote add $tmp_remote $tmpdir
+ git fetch $tmp_remote
+ git merge $tmp_remote/$tmp_branch # TODO configurable branch
diff --git a/.graveyard/git/git-eternal-move b/.graveyard/git/git-eternal-move
new file mode 100755
index 00000000..50361e7b
--- /dev/null
+++ b/.graveyard/git/git-eternal-move
@@ -0,0 +1,15 @@
+#! /bin/sh
+#
+# git-eternal-move FROM TO-DIRECTORY
+#
+set -euf
+if test $# -ne 2; then
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+fi
+exec git filter-branch --tree-filter "
+ set -euf
+ if test -e '$1'; then
+ mkdir -p '$2'
+ mv '$1' '$2'
+ fi"