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

[PATCH 2/3] apply: simplify build_fake_ancestor()

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 1, 2013, 04:32 UTC
Message-ID
<1359693125-22357-3-git-send-email-gitster@pobox.com>
In-Reply-To
<1359693125-22357-1-git-send-email-gitster@pobox.com>

The local variable sha1_ptr in the build_fake_ancestor() function used to either point at the null_sha1[] (if the ancestor did not have the path) or at sha1[] (if we read the object name into the local array), but 7a98869 (apply: get rid of --index-info in favor of --build-fake-ancestor, 2007-09-17) made the "missing in the ancestor" case unnecessary, hence sha1_ptr, when used, always points at the local array.

Get rid of the unneeded variable, and restructure the if/else cascade a bit to make it easier to read. There should be no behaviour change.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin/apply.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/builtin/apply.c b/builtin/apply.c
index 156b3ce..a1db7b4 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3598,7 +3598,6 @@ static void build_fake_ancestor(struct patch *list, const char *filename)
 	 * worth showing the new sha1 prefix, but until then...
 	 */
 	for (patch = list; patch; patch = patch->next) {
-		const unsigned char *sha1_ptr;
 		unsigned char sha1[20];
 		struct cache_entry *ce;
 		const char *name;
@@ -3606,20 +3605,19 @@ static void build_fake_ancestor(struct patch *list, const char *filename)
 		name = patch->old_name ? patch->old_name : patch->new_name;
 		if (0 < patch->is_new)
 			continue;
-		else if (get_sha1_blob(patch->old_sha1_prefix, sha1))
-			/* git diff has no index line for mode/type changes */
-			if (!patch->lines_added && !patch->lines_deleted) {
-				if (get_current_sha1(patch->old_name, sha1))
-					die("mode change for %s, which is not "
-						"in current HEAD", name);
-				sha1_ptr = sha1;
-			} else
-				die("sha1 information is lacking or useless "
-					"(%s).", name);
-		else
-			sha1_ptr = sha1;
 
-		ce = make_cache_entry(patch->old_mode, sha1_ptr, name, 0, 0);
+		if (!get_sha1_blob(patch->old_sha1_prefix, sha1)) {
+			; /* ok */
+		} else if (!patch->lines_added && !patch->lines_deleted) {
+			/* mode-only change: update the current */
+			if (get_current_sha1(patch->old_name, sha1))
+				die("mode change for %s, which is not "
+				    "in current HEAD", name);
+		} else
+			die("sha1 information is lacking or useless "
+			    "(%s).", name);
+
+		ce = make_cache_entry(patch->old_mode, sha1, name, 0, 0);
 		if (!ce)
 			die(_("make_cache_entry failed for path '%s'"), name);
 		if (add_index_entry(&result, ce, ADD_CACHE_OK_TO_ADD))
-- 
1.8.1.2.612.g09f4be5
Previous: Martin von ZweigbergkNext: Junio C Hamano
Message 9 of 11 in “"sha1 information is lacking or useless" when rebasing with a submodule pointer conflict”
  1. Michael SimsJan 30, 2013
  2. Heiko VoigtJan 30, 2013
  3. Heiko VoigtJan 30, 2013
  4. Junio C HamanoJan 30, 2013
  5. Junio C HamanoFeb 1, 2013
  6. 0/3 rebasing changes that update submodulesJunio C Hamano, Feb 1, 2013
  7. 1/3 git-am: record full index line in the patch used while rebasingJunio C Hamano, Feb 1, 2013
  8. Martin von ZweigbergkFeb 1, 2013
  9. 2/3 apply: simplify build_fake_ancestor()Junio C Hamano, Feb 1, 2013
  10. 3/3 apply: diagnose incomplete submodule object name betterJunio C Hamano, Feb 1, 2013
  11. Re* [PATCH 3/3] apply: diagnose incomplete submodule object name betterJunio C Hamano, Feb 5, 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.