diff options
author | Momo <momorientes@online.de> | 2011-08-06 03:48:46 +0200 |
---|---|---|
committer | Momo <momorientes@online.de> | 2011-08-06 03:48:46 +0200 |
commit | 7a7d537ef995b5c61f95f3c39be4fd322f717e72 (patch) | |
tree | 927580cabc234decb1552f0e5f97d4f38d42a5ba /Refactory/bin | |
parent | 4545d08ac81eab0cd9edce793f69b41f204aaf2f (diff) | |
parent | 0d670fa7da3c9fb84b3fdd92a5666d7e880d1515 (diff) |
Merge branch 'master' of https://github.com/krebscode/painload
Diffstat (limited to 'Refactory/bin')
-rwxr-xr-x | Refactory/bin/git-clone-into | 48 | ||||
-rwxr-xr-x | Refactory/bin/git-eternal-move | 15 |
2 files changed, 63 insertions, 0 deletions
diff --git a/Refactory/bin/git-clone-into b/Refactory/bin/git-clone-into new file mode 100755 index 00000000..67e820e6 --- /dev/null +++ b/Refactory/bin/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/Refactory/bin/git-eternal-move b/Refactory/bin/git-eternal-move new file mode 100755 index 00000000..50361e7b --- /dev/null +++ b/Refactory/bin/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" |