Anton Shestakov <engored@ya.ru>, Sat, 29 Nov 2014 12:56:58 +0800
find-closest: searching for a thing in parent dirs, a la jQuery.closest
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/find-closest/hgroot_0.sh Sat Nov 29 12:56:58 2014 +0800
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/find-closest/hgroot_1.sh Sat Nov 29 12:56:58 2014 +0800
+while [[ $root && ! -d $root/.hg ]]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/find-closest/hgroot_2.sh Sat Nov 29 12:56:58 2014 +0800
+ [[ -d "$root/.hg" ]] && echo "$root" && break
+ [[ $root == '/' ]] && break
+ root="$(dirname "$root")"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/find-closest/hgroot_3.sh Sat Nov 29 12:56:58 2014 +0800
+ test / == "$PWD" && return || test -e "$1" && echo "$PWD" && return || cd .. && upsearch "$1"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/find-closest/test.sh Sat Nov 29 12:56:58 2014 +0800
+ RESULT=$($1) # get the result and also warm cache
+ time for r in `seq 1 100` ; do
+ } 2>&1 | gawk 'match($0, /^real\t([0-9]+)m([0-9.]+)s$/, m) {printf "%.3f", m[1] * 60 + m[2]}' )
+ if [[ $RESULT == $CHECK ]] ; then
+pushd "$PWD" > /dev/null
+echo -e 'builtins \t dirname \t upsearch'
+for depth in `seq 1 10` ; do
+ #do_test "$HERE/hgroot_0.sh"
+ do_test "$HERE/hgroot_1.sh"
+ do_test "$HERE/hgroot_2.sh"
+ do_test "$HERE/hgroot_3.sh"
+echo 'tracked in mercurial'
+echo -e 'builtins \t dirname \t upsearch'
+for depth in `seq 1 10` ; do
+ #do_test "$HERE/hgroot_0.sh"
+ do_test "$HERE/hgroot_1.sh"
+ do_test "$HERE/hgroot_2.sh"
+ do_test "$HERE/hgroot_3.sh"