From 66bf85a462893f9df7e516a5f334dbba08122617 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 25 Sep 2005 11:43:05 -0700 Subject: [PATCH] Add "git-update-ref" to update the HEAD (or other) ref This is a careful version of the script stuff that currently just blindly writes HEAD with a new value. You can use git-update-ref HEAD or git-update-ref HEAD where the latter version verifies that the old value of HEAD matches oldhead. It basically allows a "ref" file to be a symbolic pointer to another ref file by starting with the four-byte header sequence of "ref:". More importantly, it allows the update of a ref file to follow these symbolic pointers, whether they are symlinks or these "regular file symbolic refs". NOTE! It follows _real_ symlinks only if they start with "refs/": otherwise it will just try to read them and update them as a regular file (ie it will allow the filesystem to follow them, but will overwrite such a symlink to somewhere else with a regular filename). In general, using git-update-ref HEAD "$head" should be a _lot_ safer than doing echo "$head" > "$GIT_DIR/HEAD" both from a symlink following standpoint _and_ an error checking standpoint. The "refs/" rule for symlinks means that symlinks that point to "outside" the tree are safe: they'll be followed for reading but not for writing (so we'll never write through a ref symlink to some other tree, if you have copied a whole archive by creating a symlink tree). Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- Makefile | 1 + 1 file changed, 1 insertion(+) (limited to 'Makefile') diff --git a/Makefile b/Makefile index d18153de5d..afd4b14c41 100644 --- a/Makefile +++ b/Makefile @@ -116,6 +116,7 @@ PROGRAMS = \ git-ssh-upload git-tar-tree git-unpack-file \ git-unpack-objects git-update-index git-update-server-info \ git-upload-pack git-verify-pack git-write-tree \ + git-update-ref \ $(SIMPLE_PROGRAMS) # Backward compatibility -- to be removed in 0.99.8 -- cgit v1.2.3