Adapting scripts to work in current (not top) directory

From: Alexey Nezhdanov <snake@penza-gsm.ru>
Date: 2005-05-12 23:58:10
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.
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.

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.
4) files and patch with spaces not supported. Probably fixable but first I 
want to resolve points (1), (2) and (3)

===========================
#!/bin/bash
#
# Add new file to a GIT repository.
# Copyright (c) Petr Baudis, 2005
#
# Takes a list of file names at the command line, and schedules them
# for addition to the GIT repository at the next commit.

. ${COGITO_LIB:-/home/snake/lib/cogito/}cg-Xlib

[ "$1" ] || die "usage: cg-add FILE..."

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

for file in "$@"; do
        if [ -f "$file" ]; then
                echo "Adding file $file"
        else
                die "$file does not exist"
        fi
done

cd "$gitpath"

files=

for file in "$@"; do
        files="$files $subpath/$file"
done

git-update-cache --add -- $files
===========================

-- 
Respectfully
Alexey Nezhdanov

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Thu May 12 23:58:29 2005

This archive was generated by hypermail 2.1.8 : 2005-05-12 23:58:30 EST