1. 15 10月, 2005 1 次提交
  2. 02 10月, 2005 2 次提交
    • J
      Use resolve_ref() to implement read_ref(). · a876ed83
      Junio C Hamano 提交于
      Symbolic refs are understood by resolve_ref(), so existing read_ref()
      users will automatically understand them as well.
      Signed-off-by: NJunio C Hamano <junio@twinsun.com>
      a876ed83
    • J
      Teach update-ref about a symbolic ref stored in a textfile. · 9b143c6e
      Junio C Hamano 提交于
      A symbolic ref is a regular file whose contents is "ref:", followed by
      optional leading whitespaces, followed by a GIT_DIR relative pathname,
      followed by optional trailing whitespaces (the optional whitespaces
      are unconditionally removed, so you cannot have leading nor trailing
      whitespaces).  This can be used in place of a traditional symbolic
      link .git/HEAD that usually points at "refs/heads/master".  You can
      instead have a regular file .git/HEAD whose contents is
      "ref: refs/heads/master".
      
      [jc: currently the code does not enforce the symbolic ref to begin with
       refs/, unlike the symbolic link case.  It may be worthwhile to require
       either case to begin with refs/ and not have any /./ nor /../ in them.]
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      9b143c6e
  3. 29 9月, 2005 1 次提交
  4. 26 9月, 2005 2 次提交
    • J
      Plug a small race in update-ref.c. · 152da3df
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      152da3df
    • L
      [PATCH] Add "git-update-ref" to update the HEAD (or other) ref · 66bf85a4
      Linus Torvalds 提交于
      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: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      66bf85a4