git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Announcing git-reparent

From
Mark Lodato <lodatom@gmail.com>
Date
Jan 14, 2013, 20:28 UTC
Message-ID
<CAHREChigPiRpwcM5QPEG8UJVro_fTN_a76AZaqowTWbwtw_M-g@mail.gmail.com>
In-Reply-To
<CAA01Csoh24ppo37fzptzZKvFrzGQyhz-0eDTQsP8tZiTRQ2YwA@mail.gmail.com>

On Mon, Jan 14, 2013 at 3:03 AM, Piotr Krukowiecki <piotr.krukowiecki@gmail.com> wrote:

Show 11 quoted lines
> Just wondering, is the result different than something like
>
> git checkout commit_to_reparent
> cp -r * ../snapshot/
> git reset --hard new_parent
> rm -r *
> cp -r ../snapshot/* .
> git add -A
>
> (assumes 1 parent, does not cope with .dot files, and has probably
> other small problems)

The result is similar, but your script would also lose the commit message and author. I think the following would do exactly as my script does (untested):

git checkout commit_to_reparent git branch tmp git reset --soft new_parent git commit -C tmp git branch -D tmp

I actually contemplated using the above method in my script, rather than git-commit-tree and git-reset. In the end, I decided to stick with my original approach because it does not create any intermediate state; either an early command fails and nothing changes, or the git reset works and everything is done. Using the above might be cleaner for the --edit flag since it allows the git-commit cleanup of the commit message, but this would require much more careful error handling, and might make the reflog uglier.

I'd be interested to hear a git expert's opinion on the choice.
Previous: Andreas SchwabNext: Junio C Hamano
Message 5 of 6 in “Announcing git-reparent”
  1. Mark LodatoJan 14, 2013
  2. Jonathan NiederJan 14, 2013
  3. Piotr KrukowieckiJan 14, 2013
  4. Andreas SchwabJan 14, 2013
  5. Mark LodatoJan 14, 2013
  6. Junio C HamanoJan 14, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.