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

Re: [PATCH v13 00/14] libify apply and use lib in am, part 3

From
Christian Couder <christian.couder@gmail.com>
Date
Aug 27, 2016, 18:49 UTC
Message-ID
<CAP8UFD31xnKKigVHFhHT=TKHtDV2bSgVG61aiMnhu3X5HxJvwg@mail.gmail.com>
In-Reply-To
<20160827184547.4365-1-chriscool@tuxfamily.org>

On Sat, Aug 27, 2016 at 8:45 PM, Christian Couder <christian.couder@gmail.com> wrote:

>
> I will send a diff between this version and v12 as a reply to this
> email.
Here is the diff:
diff --git a/apply.c b/apply.c
index 7e561a4..5cd037d 100644
--- a/apply.c
+++ b/apply.c
@@ -3993,12 +3993,21 @@ static int check_patch_list(struct apply_state
*state, struct patch *patch)
     return err;
 }

+static int read_apply_cache(struct apply_state *state)
+{
+    if (state->index_file)
+        return read_cache_from(state->index_file);
+    else
+        return read_cache();
+}
+
 /* This function tries to read the sha1 from the current index */
-static int get_current_sha1(const char *path, unsigned char *sha1)
+static int get_current_sha1(struct apply_state *state, const char *path,
+                unsigned char *sha1)
 {
     int pos;

-    if (read_cache() < 0)
+    if (read_apply_cache(state) < 0)
         return -1;
     pos = cache_name_pos(path, strlen(path));
     if (pos < 0)
@@ -4042,7 +4051,7 @@ static int preimage_sha1_in_gitlink_patch(struct
patch *p, unsigned char sha1[20
 }

 /* Build an index that contains the just the files needed for a 3way merge */
-static int build_fake_ancestor(struct patch *list, const char *filename)
+static int build_fake_ancestor(struct apply_state *state, struct patch *list)
 {
     struct patch *patch;
     struct index_state result = { NULL };
@@ -4071,7 +4080,7 @@ static int build_fake_ancestor(struct patch
*list, const char *filename)
             ; /* ok */
         } else if (!patch->lines_added && !patch->lines_deleted) {
             /* mode-only change: update the current */
-            if (get_current_sha1(patch->old_name, sha1))
+            if (get_current_sha1(state, patch->old_name, sha1))
                 return error("mode change for %s, which is not "
                          "in current HEAD", name);
         } else
@@ -4089,12 +4098,13 @@ static int build_fake_ancestor(struct patch
*list, const char *filename)
         }
     }

-    hold_lock_file_for_update(&lock, filename, LOCK_DIE_ON_ERROR);
+    hold_lock_file_for_update(&lock, state->fake_ancestor, LOCK_DIE_ON_ERROR);
     res = write_locked_index(&result, &lock, COMMIT_LOCK);
     discard_index(&result);

     if (res)
-        return error("Could not write temporary index to %s", filename);
+        return error("Could not write temporary index to %s",
+                 state->fake_ancestor);

     return 0;
 }
@@ -4683,7 +4693,7 @@ static int apply_patch(struct apply_state *state,
             state->newfd = hold_locked_index(state->lock_file, 1);
     }

-    if (state->check_index && read_cache() < 0) {
+    if (state->check_index && read_apply_cache(state) < 0) {
         error(_("unable to read index file"));
         res = -128;
         goto end;
@@ -4715,7 +4725,7 @@ static int apply_patch(struct apply_state *state,
     }

     if (state->fake_ancestor &&
-        build_fake_ancestor(list, state->fake_ancestor)) {
+        build_fake_ancestor(state, list)) {
         res = -128;
         goto end;
     }
Previous: Christian CouderNext: Junio C Hamano
Message 29 of 38 in “libify apply and use lib in am, part 3”
  1. 00/14 libify apply and use lib in am, part 3Christian Couder, Aug 27, 2016
  2. 04/14 apply: make some parsing functions static againChristian Couder, Aug 27, 2016
  3. Stefan BellerAug 31, 2016
  4. 02/14 apply: rename and move opt constants to apply.hChristian Couder, Aug 27, 2016
  5. Stefan BellerAug 31, 2016
  6. Christian CouderSep 1, 2016
  7. 01/14 builtin/apply: rename option parsing functionsChristian Couder, Aug 27, 2016
  8. 05/14 apply: use error_errno() where possibleChristian Couder, Aug 27, 2016
  9. Stefan BellerAug 31, 2016
  10. 07/14 apply: don't print on stdout in verbosity_silent modeChristian Couder, Aug 27, 2016
  11. 06/14 apply: make it possible to silently applyChristian Couder, Aug 27, 2016
  12. Stefan BellerAug 31, 2016
  13. Christian CouderSep 1, 2016
  14. Stefan BellerSep 1, 2016
  15. 08/14 usage: add set_warn_routine()Christian Couder, Aug 27, 2016
  16. 14/14 builtin/am: use apply API in run_apply()Christian Couder, Aug 27, 2016
  17. Stefan BellerAug 31, 2016
  18. Christian CouderSep 1, 2016
  19. 13/14 apply: learn to use a different index fileChristian Couder, Aug 27, 2016
  20. 11/14 apply: refactor `git apply` option parsingChristian Couder, Aug 27, 2016
  21. 10/14 apply: change error_routine when silentChristian Couder, Aug 27, 2016
  22. Stefan BellerAug 31, 2016
  23. Christian CouderSep 1, 2016
  24. Christian CouderSep 4, 2016
  25. Ramsay JonesSep 4, 2016
  26. Christian CouderSep 4, 2016
  27. 09/14 usage: add get_error_routine() and get_warn_routine()Christian Couder, Aug 27, 2016
  28. 12/14 apply: pass apply state to build_fake_ancestor()Christian Couder, Aug 27, 2016
  29. Christian CouderAug 27, 2016
  30. Junio C HamanoAug 29, 2016
  31. Junio C HamanoAug 29, 2016
  32. Christian CouderAug 30, 2016
  33. Junio C HamanoAug 31, 2016
  34. Christian CouderSep 1, 2016
  35. Junio C HamanoSep 1, 2016
  36. Christian CouderSep 4, 2016
  37. Stefan BellerAug 31, 2016
  38. Christian CouderSep 1, 2016

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.