Greg Troxel wrote:
Junio C Hamano [off-list ref] writes:
quoted
"ls-tree -r HEAD foo" is probably what you meant to say.
Thanks very much for the clue - that works. The update-index
documentation should probably say that only blobs (or perhaps commits
intended to be submodules??) are acceptable, and perhaps say "ls-tree
-r" instead of ls-tree.
Makes sense. Please make it so.
By the way, for this particular application I wonder if something like
git ls-files -z <dir> | git update-index -z --force-remove --stdin
git read-tree --prefix=<dir>/ <tree>
would be easier. Or a commit-filter. :)
tree=$1
shift
tree=$(
git ls-tree -z "$tree" |
perl -0ne '
chop;
my ($info, $name) = split(/\t/, $_, 2);
if ($name eq "<dir>") {
printf("040000 tree <good tree>\t<dir>\0");
} else {
printf("%s\0", $_);
}
' |
git mktree -z
)
git commit-tree "$tree" "$@"
Thanks,
Jonathan