aboutsummaryrefslogtreecommitdiff
path: root/hash-object.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2005-09-25 11:43:05 -0700
committerJunio C Hamano <junkio@cox.net>2005-09-25 16:18:25 -0700
commit66bf85a462893f9df7e516a5f334dbba08122617 (patch)
treece3cd9a0cece3301f499e284263434792629b96c /hash-object.c
parent8cc01e5019e0dc9a86bba4cba414b46627fe0424 (diff)
downloadgit-66bf85a462893f9df7e516a5f334dbba08122617.tar.gz
git-66bf85a462893f9df7e516a5f334dbba08122617.tar.xz
[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 <newhead> or git-update-ref HEAD <newhead> <oldhead> 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 <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'hash-object.c')
0 files changed, 0 insertions, 0 deletions