Re: [RFC/PATCH] replace: add --graft option
- From
Christian Couder <chriscool@tuxfamily.org>
- Date
- May 23, 2014, 06:39 UTC
- Message-ID
- <20140523.083954.56876133762506067.chriscool@tuxfamily.org>
- In-Reply-To
- <5379D1EF.8040203@alum.mit.edu>
From: Michael Haggerty <mhagger@alum.mit.edu>
Show 29 quoted lines
> On 05/18/2014 08:29 PM, Christian Couder wrote: >> The usage string for this option is: >> >> git replace [-f] --graft <commit> [<parent>...] >> >> First we create a new commit that is the same as <commit> >> except that its parents are [<parents>...] >> >> Then we create a replace ref that replace <commit> with >> the commit we just created. >> >> With this new option, it should be straightforward to >> convert grafts to replace refs, with something like: >> >> cat .git/info/grafts | while read line >> do git replace --graft $line; done > > I love the functionality; I think it's a great step towards making > grafts obsolete. > > I haven't worked with Git's object reading/writing code much, but it > surprised me that you are editing the commit object basically as a > string, using hard-coded length constants and stuff. It seems > error-prone, and we already have a commit parser. > > Would it be possible to program this at a higher layer of abstraction > based on the commit object produced by the existing commit parser? > E.g., edit the object it produces, and write the result? Or create a > new commit object out of the parsed commit object and write that?
I tried to program this at a higher layer of abstraction first, but it was not easy to properly write the new commit.
> It's great that you're working on this!
Thanks, Christian.