From a8910f0c8c8b84aada830a8e1f86c3aef5465c10 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 6 Aug 2011 00:56:37 +0200 Subject: assimilator: add git-clone-into --- Refactory/bin/git-clone-into | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 Refactory/bin/git-clone-into (limited to 'Refactory') 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 -- cgit v1.2.3 From f3e700a1e6cd8dde164fc3882aac26426854e6b8 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 6 Aug 2011 02:31:31 +0200 Subject: git-eternal-move: add to wrong location --- Refactory/bin/git-eternal-move | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 Refactory/bin/git-eternal-move (limited to 'Refactory') diff --git a/Refactory/bin/git-eternal-move b/Refactory/bin/git-eternal-move new file mode 100755 index 00000000..075748fd --- /dev/null +++ b/Refactory/bin/git-eternal-move @@ -0,0 +1,11 @@ +#! /bin/sh +# +# git-eternal-move FROM TO +# +set -euf +git filter-branch --tree-filter " + set -euf + if test -e '$1'; then + mkdir -p '`dirname "$2"`' + mv '$1' '$2' + fi" -- cgit v1.2.3 From 23083bcbe9252bb351fc7d8cd2fa41e34d44235e Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 6 Aug 2011 02:37:54 +0200 Subject: git-eternal-move: check $# --- Refactory/bin/git-eternal-move | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'Refactory') diff --git a/Refactory/bin/git-eternal-move b/Refactory/bin/git-eternal-move index 075748fd..bcf79501 100755 --- a/Refactory/bin/git-eternal-move +++ b/Refactory/bin/git-eternal-move @@ -3,9 +3,12 @@ # git-eternal-move FROM TO # set -euf -git filter-branch --tree-filter " +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 '`dirname "$2"`' mv '$1' '$2' fi" -- cgit v1.2.3 From 7463cf88be72462377106cd6c3a93b880c01d005 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 6 Aug 2011 02:38:50 +0200 Subject: git-eternal-move: $2 is interpreted as dir --- Refactory/bin/git-eternal-move | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Refactory') diff --git a/Refactory/bin/git-eternal-move b/Refactory/bin/git-eternal-move index bcf79501..50361e7b 100755 --- a/Refactory/bin/git-eternal-move +++ b/Refactory/bin/git-eternal-move @@ -1,6 +1,6 @@ #! /bin/sh # -# git-eternal-move FROM TO +# git-eternal-move FROM TO-DIRECTORY # set -euf if test $# -ne 2; then @@ -10,5 +10,6 @@ fi exec git filter-branch --tree-filter " set -euf if test -e '$1'; then + mkdir -p '$2' mv '$1' '$2' fi" -- cgit v1.2.3