From: Petr Baudis Date: Thu, 12 May 2005 20:12:15 GMT Subject: Re: Adapting scripts to work in current (not top) directory Message-ID: <20050512201215.GI324@pasky.ji.cz> In-Reply-To: <200505121758.10971.snake@penza-gsm.ru> Dear diary, on Thu, May 12, 2005 at 03:58:10PM CEST, I got a letter where Alexey Nezhdanov told me that... > All git and cogito scripts wants .git subdirectory. If I'm in a subdirectory > that have no .git direcory in it I'm out of luck. This is fine for Cogito, but Git itself shouldn't care - unless you mean the bundled mini-plumbing scripts. I don't know if anyone (and who) uses them except Linus, but I'm not likely to make much effort to maintain them, or even to actually accept any non-trivial changes to them. > I have wrote an example script that determines the lowest possible .git > directory position and changes to it to satisfy user request. > > Problems with script: > 1) May be I misunderstood the git ideology and it needs not this at all. Cogito really needs it. > if point (1) is false then there are couple of other problems: > 2) Script is extremelly ugly. I'm a week bash programmer so please criticize. > 3) This logic shold be somehow embedded to all git- and cg- scripts. I can not > figure how to do it non-intruisively. Add it to cg-Xlib. You can just update $_git appropriately. (Except when you were explicitly passed GIT_DIR.) > gitpath= > subpath= > curpath=`pwd` > for ((i=2;i<9999;i=i+1)) ; do { > path1=`echo $curpath | cut -d / -f 0-$i` > path2=`echo $curpath | cut -d / -f $((i+1))-` > [ -d "$path1"/.git ] && gitpath=$path1 && subpath=$path2 > [ "$path1" == "$curpath" ] && break > }; done I would gradually trim the $curpath by $(dirname) until I hit $curpath/.git or the root directory. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor