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

[PATCH 5/7] move create_symref() past log_ref_write()

From
Nicolas Pitre <nico@cam.org>
Date
Jan 26, 2007, 22:26 UTC
Message-ID
<11698503722922-git-send-email-nico@cam.org>
In-Reply-To
<1169850372648-git-send-email-nico@cam.org>

This doesn't change the code at all. It is done to makes the next patch more obvious.

Signed-off-by: Nicolas Pitre <nico@cam.org>
---
 refs.c |   86 ++++++++++++++++++++++++++++++++--------------------------------
 1 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/refs.c b/refs.c
index 92fa2e4..f91e853 100644
--- a/refs.c
+++ b/refs.c
@@ -309,49 +309,6 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *
 	return ref;
 }
 
-int create_symref(const char *ref_target, const char *refs_heads_master)
-{
-	const char *lockpath;
-	char ref[1000];
-	int fd, len, written;
-	const char *git_HEAD = git_path("%s", ref_target);
-
-#ifndef NO_SYMLINK_HEAD
-	if (prefer_symlink_refs) {
-		unlink(git_HEAD);
-		if (!symlink(refs_heads_master, git_HEAD))
-			return 0;
-		fprintf(stderr, "no symlink - falling back to symbolic ref\n");
-	}
-#endif
-
-	len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master);
-	if (sizeof(ref) <= len) {
-		error("refname too long: %s", refs_heads_master);
-		return -1;
-	}
-	lockpath = mkpath("%s.lock", git_HEAD);
-	fd = open(lockpath, O_CREAT | O_EXCL | O_WRONLY, 0666);	
-	written = write_in_full(fd, ref, len);
-	close(fd);
-	if (written != len) {
-		unlink(lockpath);
-		error("Unable to write to %s", lockpath);
-		return -2;
-	}
-	if (rename(lockpath, git_HEAD) < 0) {
-		unlink(lockpath);
-		error("Unable to create %s", git_HEAD);
-		return -3;
-	}
-	if (adjust_shared_perm(git_HEAD)) {
-		unlink(lockpath);
-		error("Unable to fix permissions on %s", lockpath);
-		return -4;
-	}
-	return 0;
-}
-
 int read_ref(const char *ref, unsigned char *sha1)
 {
 	if (resolve_ref(ref, sha1, 1, NULL))
@@ -1022,6 +979,49 @@ int write_ref_sha1(struct ref_lock *lock,
 	return 0;
 }
 
+int create_symref(const char *ref_target, const char *refs_heads_master)
+{
+	const char *lockpath;
+	char ref[1000];
+	int fd, len, written;
+	const char *git_HEAD = git_path("%s", ref_target);
+
+#ifndef NO_SYMLINK_HEAD
+	if (prefer_symlink_refs) {
+		unlink(git_HEAD);
+		if (!symlink(refs_heads_master, git_HEAD))
+			return 0;
+		fprintf(stderr, "no symlink - falling back to symbolic ref\n");
+	}
+#endif
+
+	len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master);
+	if (sizeof(ref) <= len) {
+		error("refname too long: %s", refs_heads_master);
+		return -1;
+	}
+	lockpath = mkpath("%s.lock", git_HEAD);
+	fd = open(lockpath, O_CREAT | O_EXCL | O_WRONLY, 0666);	
+	written = write_in_full(fd, ref, len);
+	close(fd);
+	if (written != len) {
+		unlink(lockpath);
+		error("Unable to write to %s", lockpath);
+		return -2;
+	}
+	if (rename(lockpath, git_HEAD) < 0) {
+		unlink(lockpath);
+		error("Unable to create %s", git_HEAD);
+		return -3;
+	}
+	if (adjust_shared_perm(git_HEAD)) {
+		unlink(lockpath);
+		error("Unable to fix permissions on %s", lockpath);
+		return -4;
+	}
+	return 0;
+}
+
 static char *ref_msg(const char *line, const char *endp)
 {
 	const char *ep;
-- 
1.5.0.rc2.g6e2c
Previous: Nicolas PitreNext: Nicolas Pitre
Message 5 of 8 in “make reflog filename independent from struct ref_lock”
  1. 1/7 make reflog filename independent from struct ref_lockNicolas Pitre, Jan 26, 2007
  2. 2/7 lock_ref_sha1_basic(): remember the original name of a ref when resolving itNicolas Pitre, Jan 26, 2007
  3. 3/7 enable separate reflog for HEADNicolas Pitre, Jan 26, 2007
  4. 4/7 add reflog entries for HEAD when detachedNicolas Pitre, Jan 26, 2007
  5. 5/7 move create_symref() past log_ref_write()Nicolas Pitre, Jan 26, 2007
  6. 6/7 add logref support to git-symbolic-refNicolas Pitre, Jan 26, 2007
  7. 7/7 add reflog when moving HEAD to a new branchNicolas Pitre, Jan 26, 2007
  8. 2/3 create_symref(): do not assume pathname from git_path() persists long enoughJunio C Hamano, Jan 27, 2007

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.