Re: Problem creating commits/trees with commit-tree/mktree
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Jan 11, 2010, 18:17 UTC
- Message-ID
- <20100111181712.GQ32155@spearce.org>
- In-Reply-To
- <f6d77fed1001111014g73a06923na05cd14d37968b04@mail.gmail.com>
Gavin Beatty <gavinbeatty@gmail.com> wrote:
Show 11 quoted lines
> I want to write commits to a branch without touching the index or > having a checkout (for a git subcommand I'm writing). > > I can create new blobs and trees but can't figure out how to commit a > new tree/blob _with_ the old tree. > > Currently, I do something a lot like: > > objsha=$(echo 'contents' | git hash-object -w --stdin) > objtreesha=$(printf "100644 blob $objsha\tfile.txt\000" | git mktree -z) > newtreesha=$(printf "040000 tree $objtreesha\ttreefileisin\000" | git mktree -z)
You aren't feeding in the old tree contents as part of this command.
If you are really doing this via a script, you should look at git-fast-import. Its faster, and its language better supports this notion of editing an existing tree.
-- Shawn.