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

[PATCH 5/5] lock_ref_for_update(): avoid a symref resolution

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Jun 7, 2016, 11:50 UTC
Message-ID
<dd34c6a5ef249f4ffb8c8cb7238889e84e19f82c.1465299118.git.mhagger@alum.mit.edu>
In-Reply-To
<cover.1465299118.git.mhagger@alum.mit.edu>

If we're overwriting a symref with a SHA-1, we need to resolve the value of the symref (1) to check against update->old_sha1 and (2) to write to its reflog. However, we've already read the symref itself and know its referent. So there is no need to read the symref's value through the symref; we can read the referent directly.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
 refs/files-backend.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 98c8b95..b8d7a9a 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -3481,7 +3481,7 @@ static int lock_ref_for_update(struct ref_update *update,
 			 * the transaction, so we have to read it here
 			 * to record and possibly check old_sha1:
 			 */
-			if (read_ref_full(update->refname, 0,
+			if (read_ref_full(referent.buf, 0,
 					  lock->old_oid.hash, NULL)) {
 				if (update->flags & REF_HAVE_OLD) {
 					strbuf_addf(err, "cannot lock ref '%s': "
-- 
2.8.1
Previous: Michael Haggerty
Message 11 of 11 in “Improve test coverage of update-ref error messages”
  1. 0/5 Improve test coverage of update-ref error messagesMichael Haggerty, Jun 7, 2016
  2. 1/5 t1404: rename file to t1404-update-ref-errors.shMichael Haggerty, Jun 7, 2016
  3. 2/5 t1404: document function test_update_rejectedMichael Haggerty, Jun 7, 2016
  4. Johannes SixtJun 7, 2016
  5. Junio C HamanoJun 7, 2016
  6. Michael HaggertyJun 9, 2016
  7. Junio C HamanoJun 9, 2016
  8. Michael HaggertyJun 10, 2016
  9. 3/5 t1404: add more tests of update-ref error handlingMichael Haggerty, Jun 7, 2016
  10. 4/5 lock_ref_for_update(): make error handling more uniformMichael Haggerty, Jun 7, 2016
  11. 5/5 lock_ref_for_update(): avoid a symref resolutionMichael Haggerty, Jun 7, 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.