Re: update-index --index-info producing spurious submodule commits
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Aug 20, 2011, 02:15 UTC
- Message-ID
- <20110820021430.GA14281@elie.sbx02827.chicail.wayport.net>
- In-Reply-To
- <rmi39gxacp1.fsf@fnord.ir.bbn.com>
Greg Troxel wrote:
> Junio C Hamano <gitster@pobox.com> writes:
Show 6 quoted lines
>> "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