threads / discuss / 8439

git "manifest" command

Subject: git "manifest" command

## tl;dr

4 messages between Jun 5, 2007 and Jun 5, 2007.

replies: 3people: 3as markdown or json

Csaba Henk· Jun 5, 2007, 10:03 UTC · lore
Hi,

I was lacking a "manifest" like command, one which operates like git-ls-files just you can use it with arbitrary tree-ish (or, put it otherwise, one which opererates like git-ls-tree just acts recursively). Maybe it's there already and I just didn't find my way through git glossary?

Anyway, I rolled my own. Chanches are you find it an useful addition.
Csaba

------[git-manifest.sh]---8<--------------------------------------- #!/bin/sh # # Copyright (c) 2007 Csaba Henk

display() {
	if [ $verbose ]
	then
		echo -n $1 $2 $3" "
        fi
        echo "$4"
}
walk() {
	git-ls-tree "$1" | while read -r mode type sha name
	do
		if [ "$type" = tree ]
		then
			display $mode $type $sha "$2$name/"
			walk $sha "$2$name/"
		else
			display $mode $type $sha "$2$name"
		fi
	done
}
help() {
    echo \
"List content of tree-ish recursively. Usage:
`basename "$0"` [-v] <tree-ish>
" >&2
    exit
}
case $# in
    1|2) ;;
    *)
       help 
esac
verbose=
if [ $# -eq 2 ]
then
	if [ "$1" = -v ]
	then
		verbose=1
	else
		help
	fi
	shift
else
	case "$1" in
		-h|--help) help
	esac
fi
walk "$1"
Martin Waitz· Jun 5, 2007, 11:44 UTC · re: Csaba Henk · lore

Re: git "manifest" command

hoi :)
On Tue, Jun 05, 2007 at 10:03:18AM +0000, Csaba Henk wrote:
> I was lacking a "manifest" like command, one which operates like
> git-ls-files just you can use it with arbitrary tree-ish (or, put it
> otherwise, one which opererates like git-ls-tree just acts recursively).
like git ls-tree -r?
-- 
Martin Waitz
Matthias Lederhofer· Jun 5, 2007, 17:11 UTC · re: Csaba Henk · lore

Re: git "manifest" command

Csaba Henk <csaba-ml@creo.hu> wrote:
> On 2007-06-05, Martin Waitz <tali@admingilde.org> wrote:
> > like git ls-tree -r?
> 
> Yes. I knew this functionality must be there somewehere...
If you use this from a script note that ls-tree shows the subdirectory
of a tree that corresponds to the current directory in the repository.
This one should always show the full tree:
    $ git ls-tree --full-name -r HEAD $(git rev-parse --show-cdup)

← back to recent threads