git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Adapting scripts to work in current (not top) directory

From
ANAlexey Nezhdanov <snake@penza-gsm.ru>
Date
May 12, 2005, 13:58 UTC
Message-ID
<200505121758.10971.snake@penza-gsm.ru>

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
Next: H. Peter Anvin
Message 1 of 5 in “Adapting scripts to work in current (not top) directory”
  1. Alexey NezhdanovMay 12, 2005
  2. H. Peter AnvinMay 12, 2005
  3. Petr BaudisMay 12, 2005
  4. Alexey NezhdanovMay 13, 2005
  5. Petr BaudisMay 13, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.