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

Porcelain support for daggy-fixes?

From
Mikko Rantalainen <mikko.rantalainen@peda.net>
Date
Jun 10, 2010, 13:55 UTC
Message-ID
<4C10EEBE.5030400@peda.net>
Introduction: http://monotone.ca/wiki/DaggyFixes/
I understand that this can already be done with git. The method is
1) store the current HEAD somewhere
2) figure out the proper parent for the bug fix
3) checkout the parent
4) implement the fix
5) commit the fix
6) checkout HEAD
7) merge with the commit from step 5

Is there some way to do this more automatically? The way I think this should be done:

1) fix a bug that you just found (let's imagine for a second that you
just happened to know how to fix the bug without knowing the history of bug)
2) git commit (the bugfix is now the tip of the HEAD)
3) git daggy-fix
And you're done.
Here the magical "daggy-fix" would do the following:

"Remove" the change HEAD^..HEAD from the current branch, try to recursively apply the patch to ancestors of HEAD and locate oldest parent that the patch can be automatically applied to without a conflict. Let's call this parent BUG (best guess for the original commit that introduced the bug). Commit the patch as a new child of BUG and then merge with HEAD^ (from the moment daggy-fix was executed). Checkout the new HEAD to replace the original HEAD.

In short, replace the current tip of the current branch with the merge of last commit rebased as the bugfix for historical commit and HEAD^.

Logical syntax for this command could be
git daggy-fix fix-commit-id bug-commit-id

where fix-commit-id is the commit that should be relocated and re-merged bug-commit-id is the commit that introduced the bug (no need for automatic detection of the parent)

both commit id's are optional.
Does this sound reasonable or is there already some better way?
-- 
Mikko
Next: Pascal Obry
Message 1 of 3 in “Porcelain support for daggy-fixes?”
  1. Mikko RantalainenJun 10, 2010
  2. Pascal ObryJun 10, 2010
  3. Mikko RantalainenJun 11, 2010

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.