1. 21 6月, 2013 6 次提交
  2. 09 5月, 2013 1 次提交
    • F
      Add new @ shortcut for HEAD · cdfd9483
      Felipe Contreras 提交于
      Typing 'HEAD' is tedious, especially when we can use '@' instead.
      
      The reason for choosing '@' is that it follows naturally from the
      ref@op syntax (e.g. HEAD@{u}), except we have no ref, and no
      operation, and when we don't have those, it makes sens to assume
      'HEAD'.
      
      So now we can use 'git show @~1', and all that goody goodness.
      
      Until now '@' was a valid name, but it conflicts with this idea, so
      let's make it invalid. Probably very few people, if any, used this name.
      Signed-off-by: NFelipe Contreras <felipe.contreras@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      cdfd9483
  3. 02 5月, 2013 30 次提交
  4. 24 3月, 2013 1 次提交
  5. 18 3月, 2013 1 次提交
    • M
      pack-refs: add fully-peeled trait · c29c46fa
      Michael Haggerty 提交于
      Older versions of pack-refs did not write peel lines for
      refs outside of refs/tags. This meant that on reading the
      pack-refs file, we might set the REF_KNOWS_PEELED flag for
      such a ref, even though we do not know anything about its
      peeled value.
      
      The previous commit updated the writer to always peel, no
      matter what the ref is. That means that packed-refs files
      written by newer versions of git are fine to be read by both
      old and new versions of git. However, we still have the
      problem of reading packed-refs files written by older
      versions of git, or by other implementations which have not
      yet learned the same trick.
      
      The simplest fix would be to always unset the
      REF_KNOWS_PEELED flag for refs outside of refs/tags that do
      not have a peel line (if it has a peel line, we know it is
      valid, but we cannot assume a missing peel line means
      anything). But that loses an important optimization, as
      upload-pack should not need to load the object pointed to by
      refs/heads/foo to determine that it is not a tag.
      
      Instead, we add a "fully-peeled" trait to the packed-refs
      file. If it is set, we know that we can trust a missing peel
      line to mean that a ref cannot be peeled. Otherwise, we fall
      back to assuming nothing.
      
      [commit message and tests by Jeff King <peff@peff.net>]
      Signed-off-by: NMichael Haggerty <mhagger@alum.mit.edu>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c29c46fa
  6. 09 3月, 2013 1 次提交
    • J
      reflog: add for_each_reflog_ent_reverse() API · 98f85ff4
      Junio C Hamano 提交于
      "git checkout -" is a short-hand for "git checkout @{-1}" and the
      "@{nth}" notation for a negative number is to find nth previous
      checkout in the reflog of the HEAD to determine the name of the
      branch the user was on.  We would want to find the nth most recent
      reflog entry that matches "checkout: moving from X to Y" for this.
      
      Unfortunately, reflog is implemented as an append-only file, and the
      API to iterate over its entries, for_each_reflog_ent(), reads the
      file in order, giving the entries from the oldest to newer.  For the
      purpose of finding nth most recent one, this API forces us to record
      the last n entries in a rotating buffer and give the result out only
      after we read everything.  To optimize for a common case of finding
      the nth most recent one for a small value of n, we also have a side
      API for_each_recent_reflog_ent() that starts reading near the end of
      the file, but it still has to read the entries in the "wrong" order.
      The implementation of understanding @{-1} uses this interface.
      
      This all becomes unnecessary if we add an API to let us iterate over
      reflog entries in the reverse order, from the newest to older.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      98f85ff4