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

[PATCH v4 00/19] "git apply --3way"

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 10, 2012, 07:03 UTC
Message-ID
<1341903852-4815-1-git-send-email-gitster@pobox.com>

With finishing touches (mostly updates to in-code comments and log messages). Previous ones were:

    http://thread.gmane.org/gmane.comp.version-control.git/197538
    http://thread.gmane.org/gmane.comp.version-control.git/197637
    http://thread.gmane.org/gmane.comp.version-control.git/199936

Teach "git apply" a similar "-3"way merge fallback option with this series, and you can now apply your patches without having to reduce context. As it will leave the conflicted halves in the index and let you manually resolve conflicts in the working tree, "--3way" implies "--index", and cannot be used with "--cached" or "--reject".

I've been using this in my regular workflow, which involves a fair amount of "git diff >P.diff" later followed by "git apply P.diff" when flipping patches in topics around, and things seem to work OK.

Junio C Hamano (19):
  apply: fix an incomplete comment in check_patch()
  apply: a bit more comments on PATH_TO_BE_DELETED
  apply: clear_image() clears things a bit more
  apply: refactor read_file_or_gitlink()
  apply: factor out checkout_target() helper function
  apply: split load_preimage() helper function out
  apply: refactor "previous patch" logic
  apply: further split load_preimage()
  apply: move check_to_create_blob() closer to its sole caller
  apply: move "already exists" logic to check_to_create()
  apply: accept -3/--3way command line option
  apply: fall back on three-way merge
  apply: plug the three-way merge logic in
  apply: move verify_index_match() higher
  apply: --3way with add/add conflict
  apply: register conflicted stages to the index
  apply: allow rerere() to work on --3way results
  apply: document --3way option
  apply: tests for the --3way option
 Documentation/git-apply.txt |  11 +-
 builtin/apply.c             | 557 ++++++++++++++++++++++++++++++++++----------
 t/t4108-apply-threeway.sh   | 157 +++++++++++++
 t/t4117-apply-reject.sh     |   8 +
 4 files changed, 615 insertions(+), 118 deletions(-)
 create mode 100755 t/t4108-apply-threeway.sh
-- 
1.7.11.1.294.g68a9409
Next: Junio C Hamano
Message 1 of 20 in “"git apply --3way"”
  1. 00/19 "git apply --3way"Junio C Hamano, Jul 10, 2012
  2. 01/19 apply: fix an incomplete comment in check_patch()Junio C Hamano, Jul 10, 2012
  3. 02/19 apply: a bit more comments on PATH_TO_BE_DELETEDJunio C Hamano, Jul 10, 2012
  4. 03/19 apply: clear_image() clears things a bit moreJunio C Hamano, Jul 10, 2012
  5. 04/19 apply: refactor read_file_or_gitlink()Junio C Hamano, Jul 10, 2012
  6. 05/19 apply: factor out checkout_target() helper functionJunio C Hamano, Jul 10, 2012
  7. 06/19 apply: split load_preimage() helper function outJunio C Hamano, Jul 10, 2012
  8. 07/19 apply: refactor "previous patch" logicJunio C Hamano, Jul 10, 2012
  9. 08/19 apply: further split load_preimage()Junio C Hamano, Jul 10, 2012
  10. 09/19 apply: move check_to_create_blob() closer to its sole callerJunio C Hamano, Jul 10, 2012
  11. 10/19 apply: move "already exists" logic to check_to_create()Junio C Hamano, Jul 10, 2012
  12. 11/19 apply: accept -3/--3way command line optionJunio C Hamano, Jul 10, 2012
  13. 12/19 apply: fall back on three-way mergeJunio C Hamano, Jul 10, 2012
  14. 13/19 apply: plug the three-way merge logic inJunio C Hamano, Jul 10, 2012
  15. 14/19 apply: move verify_index_match() higherJunio C Hamano, Jul 10, 2012
  16. 15/19 apply: --3way with add/add conflictJunio C Hamano, Jul 10, 2012
  17. 16/19 apply: register conflicted stages to the indexJunio C Hamano, Jul 10, 2012
  18. 17/19 apply: allow rerere() to work on --3way resultsJunio C Hamano, Jul 10, 2012
  19. 18/19 apply: document --3way optionJunio C Hamano, Jul 10, 2012
  20. 19/19 apply: tests for the --3way optionJunio C Hamano, Jul 10, 2012

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.