1. 14 7月, 2017 1 次提交
    • J
      rev-list: pass diffopt->use_colors through to pretty-print · d75dfb10
      Jeff King 提交于
      When rev-list pretty-prints a commit, it creates a new
      pretty_print_context and copies items from the rev_info
      struct. We don't currently copy the "use_color" field,
      though. Nobody seems to have noticed because the only part
      of pretty.c that cares is the %C(auto,...) placeholder, and
      presumably not many people use that with the rev-list
      plumbing (as opposed to with git-log).
      
      It will become more noticeable in a future patch, though,
      when we start treating all user-format colors as auto-colors
      (in which case it would become impossible to format colors
      with rev-list, even with --color=always).
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d75dfb10
  2. 16 6月, 2017 1 次提交
  3. 05 6月, 2017 1 次提交
    • J
      diff- and log- family: handle "git cmd -h" early · 5a88f97c
      Junio C Hamano 提交于
      "git $builtin -h" bypasses the usual repository setup and calls the
      cmd_$builtin() function, expecting it to show the help text.
      
      Unfortunately the commands in the log- and the diff- family want to
      call into the revisions machinery, which by definition needs to have
      a repository already discovered.  Strictly speaking, they may not
      need a repository only for parsing "-h", but it is a good discipline
      to future-proof codepath to ensure that setup_revisions() is called
      after we know that a repository is there.
      
      Handle the "git $builtin -h" special case very early in these
      commands to work around potential issues.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5a88f97c
  4. 08 5月, 2017 1 次提交
    • B
      object: convert parse_object* to take struct object_id · c251c83d
      brian m. carlson 提交于
      Make parse_object, parse_object_or_die, and parse_object_buffer take a
      pointer to struct object_id.  Remove the temporary variables inserted
      earlier, since they are no longer necessary.  Transform all of the
      callers using the following semantic patch:
      
      @@
      expression E1;
      @@
      - parse_object(E1.hash)
      + parse_object(&E1)
      
      @@
      expression E1;
      @@
      - parse_object(E1->hash)
      + parse_object(E1)
      
      @@
      expression E1, E2;
      @@
      - parse_object_or_die(E1.hash, E2)
      + parse_object_or_die(&E1, E2)
      
      @@
      expression E1, E2;
      @@
      - parse_object_or_die(E1->hash, E2)
      + parse_object_or_die(E1, E2)
      
      @@
      expression E1, E2, E3, E4, E5;
      @@
      - parse_object_buffer(E1.hash, E2, E3, E4, E5)
      + parse_object_buffer(&E1, E2, E3, E4, E5)
      
      @@
      expression E1, E2, E3, E4, E5;
      @@
      - parse_object_buffer(E1->hash, E2, E3, E4, E5)
      + parse_object_buffer(E1, E2, E3, E4, E5)
      Signed-off-by: Nbrian m. carlson <sandals@crustytoothpaste.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c251c83d
  5. 24 4月, 2017 1 次提交
  6. 27 3月, 2017 1 次提交
  7. 31 1月, 2017 1 次提交
  8. 21 10月, 2016 1 次提交
  9. 01 9月, 2016 1 次提交
    • J
      graph: add support for --line-prefix on all graph-aware output · 660e113c
      Jacob Keller 提交于
      Add an extension to git-diff and git-log (and any other graph-aware
      displayable output) such that "--line-prefix=<string>" will print the
      additional line-prefix on every line of output.
      
      To make this work, we have to fix a few bugs in the graph API that force
      graph_show_commit_msg to be used only when you have a valid graph.
      Additionally, we extend the default_diff_output_prefix handler to work
      even when no graph is enabled.
      
      This is somewhat of a hack on top of the graph API, but I think it
      should be acceptable here.
      
      This will be used by a future extension of submodule display which
      displays the submodule diff as the actual diff between the pre and post
      commit in the submodule project.
      
      Add some tests for both git-log and git-diff to ensure that the prefix
      is honored correctly.
      Signed-off-by: NJacob Keller <jacob.keller@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      660e113c
  10. 21 7月, 2016 1 次提交
    • J
      rev-list: add optional progress reporting · 434ea3cd
      Jeff King 提交于
      It's easy to ask rev-list to do a traversal that may takes
      many seconds (e.g., by calling "--objects --all"). In theory
      you can monitor its progress by the output you get to
      stdout, but this isn't always easy.
      
      Some operations, like "--count", don't make any output until
      the end.
      
      And some callers, like check_everything_connected(), are
      using it just for the error-checking of the traversal, and
      throw away stdout entirely.
      
      This patch adds a "--progress" option which can be used to
      give some eye-candy for a user waiting for a long traversal.
      This is just a rev-list option and not a regular traversal
      option, because it needs cooperation from the callbacks in
      builtin/rev-list.c to do the actual count.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      434ea3cd
  11. 04 6月, 2016 2 次提交
    • J
      rev-list: disable bitmaps when "-n" is used with listing objects · fb85db84
      Jeff King 提交于
      You can ask rev-list to use bitmaps to speed up an --objects
      traversal, which should generally give you your answers much
      faster.
      
      Likewise, you can ask rev-list to limit such a traversal
      with `-n`, in which case we'll show only a limited set of
      commits (and only the tree and commit objects directly
      reachable from those commits).
      
      But if you do both together, the results are nonsensical. We
      end up limiting any fallback traversal we do to _find_ the
      bitmaps, but the actual set of objects we output will be
      picked arbitrarily from the union of any bitmaps we do find,
      and will involve the objects of many more commits.
      
      It's possible that somebody might want this as a "show me
      what you can, but limit the amount of work you do" flag.
      But as with the prior commit clamping "--count", the results
      are basically non-deterministic; you'll get the values from
      some commits between `n` and the total number, and you can't
      tell which.
      
      And unlike the `--count` case, we can't easily generate the
      "real" value from the bitmap values (you can't just walk
      back `-n` commits and subtract out the reachable objects
      from the boundary commits; the bitmaps for `X` record its
      total reachability, so you don't know which objects are
      directly from `X` itself, which from `X^`, and so on).
      
      So let's just fallback to the non-bitmap code path in this
      case, so we always give a sane answer.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fb85db84
    • J
      rev-list: "adjust" results of "--count --use-bitmap-index -n" · 5c9f9bf3
      Jeff King 提交于
      If you ask rev-list for:
      
          git rev-list --count --use-bitmap-index HEAD
      
      we optimize out the actual traversal and just give you the
      number of bits set in the commit bitmap. This is faster,
      which is good.
      
      But if you ask to limit the size of the traversal, like:
      
          git rev-list --count --use-bitmap-index -n 100 HEAD
      
      we'll still output the full bitmapped number we found. On
      the surface, that might even seem OK. You explicitly asked
      to use the bitmap index, and it was cheap to compute the
      real answer, so we gave it to you.
      
      But there's something much more complicated going on under
      the hood. If we don't have a bitmap directly for HEAD, then
      we have to actually traverse backwards, looking for a
      bitmapped commit. And _that_ traversal is bounded by our
      `-n` count.
      
      This is a good thing, because it bounds the work we have to
      do, which is probably what the user wanted by asking for
      `-n`. But now it makes the output quite confusing. You might
      get many values:
      
        - your `-n` value, if we walked back and never found a
          bitmap (or fewer if there weren't that many commits)
      
        - the actual full count, if we found a bitmap root for
          every path of our traversal with in the `-n` limit
      
        - any number in between! We might have walked back and
          found _some_ bitmaps, but then cut off the traversal
          early with some commits not accounted for in the result.
      
      So you cannot even see a value higher than your `-n` and say
      "OK, bitmaps kicked in, this must be the real full count".
      The only sane thing is for git to just clamp the value to a
      maximum of the `-n` value, which means we should output the
      exact same results whether bitmaps are in use or not.
      
      The test in t5310 demonstrates this by using `-n 1`.
      Without this patch we fail in the full-bitmap case (where we
      do not have to traverse at all) but _not_ in the
      partial-bitmap case (where we have to walk down to find an
      actual bitmap). With this patch, both cases just work.
      
      I didn't implement the crazy in-between case, just because
      it's complicated to set up, and is really a subset of the
      full-count case, which we do cover.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5c9f9bf3
  12. 17 3月, 2016 2 次提交
    • J
      list-objects: pass full pathname to callbacks · 2824e184
      Jeff King 提交于
      When we find a blob at "a/b/c", we currently pass this to
      our show_object_fn callbacks as two components: "a/b/" and
      "c". Callbacks which want the full value then call
      path_name(), which concatenates the two. But this is an
      inefficient interface; the path is a strbuf, and we could
      simply append "c" to it temporarily, then roll back the
      length, without creating a new copy.
      
      So we could improve this by teaching the callsites of
      path_name() this trick (and there are only 3). But we can
      also notice that no callback actually cares about the
      broken-down representation, and simply pass each callback
      the full path "a/b/c" as a string. The callback code becomes
      even simpler, then, as we do not have to worry about freeing
      an allocated buffer, nor rolling back our modification to
      the strbuf.
      
      This is theoretically less efficient, as some callbacks
      would not bother to format the final path component. But in
      practice this is not measurable. Since we use the same
      strbuf over and over, our work to grow it is amortized, and
      we really only pay to memcpy a few bytes.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2824e184
    • J
      list-objects: drop name_path entirely · dc06dc88
      Jeff King 提交于
      In the previous commit, we left name_path as a thin wrapper
      around a strbuf. This patch drops it entirely. As a result,
      every show_object_fn callback needs to be adjusted. However,
      none of their code needs to be changed at all, because the
      only use was to pass it to path_name(), which now handles
      the bare strbuf.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      dc06dc88
  13. 13 2月, 2016 2 次提交
    • J
      list-objects: pass full pathname to callbacks · de1e67d0
      Jeff King 提交于
      When we find a blob at "a/b/c", we currently pass this to
      our show_object_fn callbacks as two components: "a/b/" and
      "c". Callbacks which want the full value then call
      path_name(), which concatenates the two. But this is an
      inefficient interface; the path is a strbuf, and we could
      simply append "c" to it temporarily, then roll back the
      length, without creating a new copy.
      
      So we could improve this by teaching the callsites of
      path_name() this trick (and there are only 3). But we can
      also notice that no callback actually cares about the
      broken-down representation, and simply pass each callback
      the full path "a/b/c" as a string. The callback code becomes
      even simpler, then, as we do not have to worry about freeing
      an allocated buffer, nor rolling back our modification to
      the strbuf.
      
      This is theoretically less efficient, as some callbacks
      would not bother to format the final path component. But in
      practice this is not measurable. Since we use the same
      strbuf over and over, our work to grow it is amortized, and
      we really only pay to memcpy a few bytes.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      de1e67d0
    • J
      list-objects: drop name_path entirely · bd64516a
      Jeff King 提交于
      In the previous commit, we left name_path as a thin wrapper
      around a strbuf. This patch drops it entirely. As a result,
      every show_object_fn callback needs to be adjusted. However,
      none of their code needs to be changed at all, because the
      only use was to pass it to path_name(), which now handles
      the bare strbuf.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      bd64516a
  14. 20 11月, 2015 3 次提交
  15. 06 10月, 2015 1 次提交
    • J
      use sha1_to_hex_r() instead of strcpy · d59f765a
      Jeff King 提交于
      Before sha1_to_hex_r() existed, a simple way to get hex
      sha1 into a buffer was with:
      
        strcpy(buf, sha1_to_hex(sha1));
      
      This isn't wrong (assuming the buf is 41 characters), but it
      makes auditing the code base for bad strcpy() calls harder,
      as these become false positives.
      
      Let's convert them to sha1_to_hex_r(), and likewise for
      some calls to find_unique_abbrev(). While we're here, we'll
      double-check that all of the buffers are correctly sized,
      and use the more obvious GIT_SHA1_HEXSZ constant.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d59f765a
  16. 25 8月, 2015 1 次提交
    • J
      rev-list: make it obvious that we do not support notes · 2aea7a51
      Jeff King 提交于
      The rev-list command does not have the internal
      infrastructure to display notes. Running:
      
        git rev-list --notes HEAD
      
      will silently ignore the "--notes" option. Running:
      
        git rev-list --notes --grep=. HEAD
      
      will crash on an assert. Running:
      
        git rev-list --format=%N HEAD
      
      will place a literal "%N" in the output (it does not even
      expand to an empty string).
      
      Let's have rev-list tell the user that it cannot fill the
      user's request, rather than silently producing wrong data.
      Likewise, let's remove mention of the notes options from the
      rev-list documentation.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2aea7a51
  17. 02 7月, 2015 2 次提交
  18. 14 6月, 2014 3 次提交
    • J
      commit: record buffer length in cache · 8597ea3a
      Jeff King 提交于
      Most callsites which use the commit buffer try to use the
      cached version attached to the commit, rather than
      re-reading from disk. Unfortunately, that interface provides
      only a pointer to the NUL-terminated buffer, with no
      indication of the original length.
      
      For the most part, this doesn't matter. People do not put
      NULs in their commit messages, and the log code is happy to
      treat it all as a NUL-terminated string. However, some code
      paths do care. For example, when checking signatures, we
      want to be very careful that we verify all the bytes to
      avoid malicious trickery.
      
      This patch just adds an optional "size" out-pointer to
      get_commit_buffer and friends. The existing callers all pass
      NULL (there did not seem to be any obvious sites where we
      could avoid an immediate strlen() call, though perhaps with
      some further refactoring we could).
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8597ea3a
    • J
      use get_cached_commit_buffer where appropriate · a97934d8
      Jeff King 提交于
      Some call sites check commit->buffer to see whether we have
      a cached buffer, and if so, do some work with it. In the
      long run we may want to switch these code paths to make
      their decision on a different boolean flag (because checking
      the cache may get a little more expensive in the future).
      But for now, we can easily support them by converting the
      calls to use get_cached_commit_buffer.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a97934d8
    • J
      provide a helper to free commit buffer · 0fb370da
      Jeff King 提交于
      This converts two lines into one at each caller. But more
      importantly, it abstracts the concept of freeing the buffer,
      which will make it easier to change later.
      
      Note that we also need to provide a "detach" mechanism for a
      tricky case in index-pack. We are passed a buffer for the
      object generated by processing the incoming pack. If we are
      not using --strict, we just calculate the sha1 on that
      buffer and return, leaving the caller to free it.  But if we
      are using --strict, we actually attach that buffer to an
      object, pass the object to the fsck functions, and then
      detach the buffer from the object again (so that the caller
      can free it as usual).  In this case, we don't want to free
      the buffer ourselves, but just make sure it is no longer
      associated with the commit.
      
      Note that we are making the assumption here that the
      attach/detach process does not impact the buffer at all
      (e.g., it is never reallocated or modified). That holds true
      now, and we have no plans to change that. However, as we
      abstract the commit_buffer code, this dependency becomes
      less obvious. So when we detach, let's also make sure that
      we get back the same buffer that we gave to the
      commit_buffer code.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0fb370da
  19. 31 12月, 2013 1 次提交
    • V
      rev-list: add bitmap mode to speed up object lists · aa32939f
      Vicent Marti 提交于
      The bitmap reachability index used to speed up the counting objects
      phase during `pack-objects` can also be used to optimize a normal
      rev-list if the only thing required are the SHA1s of the objects during
      the list (i.e., not the path names at which trees and blobs were found).
      
      Calling `git rev-list --objects --use-bitmap-index [committish]` will
      perform an object iteration based on a bitmap result instead of actually
      walking the object graph.
      
      These are some example timings for `torvalds/linux` (warm cache,
      best-of-five):
      
          $ time git rev-list --objects master > /dev/null
      
          real    0m34.191s
          user    0m33.904s
          sys     0m0.268s
      
          $ time git rev-list --objects --use-bitmap-index master > /dev/null
      
          real    0m1.041s
          user    0m0.976s
          sys     0m0.064s
      
      Likewise, using `git rev-list --count --use-bitmap-index` will speed up
      the counting operation by building the resulting bitmap and performing a
      fast popcount (number of bits set on the bitmap) on the result.
      
      Here are some sample timings of different ways to count commits in
      `torvalds/linux`:
      
          $ time git rev-list master | wc -l
              399882
      
              real    0m6.524s
              user    0m6.060s
              sys     0m3.284s
      
          $ time git rev-list --count master
              399882
      
              real    0m4.318s
              user    0m4.236s
              sys     0m0.076s
      
          $ time git rev-list --use-bitmap-index --count master
              399882
      
              real    0m0.217s
              user    0m0.176s
              sys     0m0.040s
      
      This also respects negative refs, so you can use it to count
      a slice of history:
      
              $ time git rev-list --count v3.0..master
              144843
      
              real    0m1.971s
              user    0m1.932s
              sys     0m0.036s
      
              $ time git rev-list --use-bitmap-index --count v3.0..master
              real    0m0.280s
              user    0m0.220s
              sys     0m0.056s
      
      Though note that the closer the endpoints, the less it helps. In the
      traversal case, we have fewer commits to cross, so we take less time.
      But the bitmap time is dominated by generating the pack revindex, which
      is constant with respect to the refs given.
      
      Note that you cannot yet get a fast --left-right count of a symmetric
      difference (e.g., "--count --left-right master...topic"). The slow part
      of that walk actually happens during the merge-base determination when
      we parse "master...topic". Even though a count does not actually need to
      know the real merge base (it only needs to take the symmetric difference
      of the bitmaps), the revision code would require some refactoring to
      handle this case.
      
      Additionally, a `--test-bitmap` flag has been added that will perform
      the same rev-list manually (i.e. using a normal revwalk) and using
      bitmaps, and verify that the results are the same. This can be used to
      exercise the bitmap code, and also to verify that the contents of the
      .bitmap file are sane.
      Signed-off-by: NVicent Marti <tanoku@gmail.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      aa32939f
  20. 17 10月, 2013 1 次提交
    • J
      C: have space around && and || operators · c01499ef
      Junio C Hamano 提交于
      Correct all hits from
      
          git grep -e '\(&&\|||\)[^ ]' -e '[^	 ]\(&&\|||\)' -- '*.c'
      
      i.e. && or || operators that are followed by anything but a SP,
      or that follow something other than a SP or a HT, so that these
      operators have a SP around it when necessary.
      
      We usually refrain from making this kind of a tree-wide change in
      order to avoid unnecessary conflicts with other "real work" patches,
      but in this case, the end result does not have a potentially
      cumbersome tree-wide impact, while this is a tree-wide cleanup.
      
      Fixes to compat/regex/regcomp.c and xdiff/xemit.c are to replace a
      HT immediately after && with a SP.
      
      This is based on Felipe's patch to bultin/symbolic-ref.c; I did all
      the finding out what other files in the whole tree need to be fixed
      and did the fix and also the log message while reviewing that single
      liner, so any screw-ups in this version are mine.
      Signed-off-by: NFelipe Contreras <felipe.contreras@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c01499ef
  21. 29 8月, 2013 1 次提交
  22. 27 6月, 2013 1 次提交
    • A
      pretty: --format output should honor logOutputEncoding · ecaee805
      Alexey Shumkin 提交于
      One can set an alias
      	$ git config [--global] alias.lg "log --graph --pretty=format:'%Cred%h%Creset
      	-%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset'
      	--abbrev-commit --date=local"
      
      to see the log as a pretty tree (like *gitk* but in a terminal).
      
      However, log messages written in an encoding i18n.commitEncoding which differs
      from terminal encoding are shown corrupted even when i18n.logOutputEncoding
      and terminal encoding are the same (e.g. log messages committed on a Cygwin box
      with Windows-1251 encoding seen on a Linux box with a UTF-8 encoding and vice versa).
      
      To simplify an example we can say the following two commands are expected
      to give the same output to a terminal:
      
      	$ git log --oneline --no-color
      	$ git log --pretty=format:'%h %s'
      
      However, the former pays attention to i18n.logOutputEncoding
      configuration, while the latter does not when it formats "%s".
      
      The same corruption is true for
      	$ git diff --submodule=log
      and
      	$ git rev-list --pretty=format:%s HEAD
      and
      	$ git reset --hard
      
      This patch makes pretty --format honor logOutputEncoding when it formats
      log message.
      Signed-off-by: NAlexey Shumkin <Alex.Crezoff@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ecaee805
  23. 29 10月, 2012 2 次提交
  24. 05 5月, 2012 1 次提交
    • J
      log: respect date_mode_explicit with --format:%gd · f026c756
      Jeff King 提交于
      When we show a reflog selector (e.g., via "git log -g"), we
      perform some DWIM magic: while we normally show the entry's
      index (e.g., HEAD@{1}), if the user has given us a date
      with "--date", then we show a date-based select (e.g.,
      HEAD@{yesterday}).
      
      However, we don't want to trigger this magic if the
      alternate date format we got was from the "log.date"
      configuration; that is not sufficiently strong context for
      us to invoke this particular magic. To fix this, commit
      f4ea32f0 (improve reflog date/number heuristic, 2009-09-24)
      introduced a "date_mode_explicit" flag in rev_info. This
      flag is set only when we see a "--date" option on the
      command line, and we a vanilla date to the reflog code if
      the date was not explicit.
      
      Later, commit 8f8f5476 (Introduce new pretty formats %g[sdD]
      for reflog information, 2009-10-19) added another way to
      show selectors, and it did not respect the date_mode_explicit
      flag from f4ea32f0.
      
      This patch propagates the date_mode_explicit flag to the
      pretty-print code, which can then use it to pass the
      appropriate date field to the reflog code. This brings the
      behavior of "%gd" in line with the other formats, and means
      that its output is independent of any user configuration.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f026c756
  25. 29 2月, 2012 2 次提交
  26. 14 2月, 2012 1 次提交
  27. 02 9月, 2011 2 次提交
    • J
      rev-list --verify-object · 5a48d240
      Junio C Hamano 提交于
      Often we want to verify everything reachable from a given set of commits
      are present in our repository and connected without a gap to the tips of
      our refs. We used to do this for this purpose:
      
          $ rev-list --objects $commits_to_be_tested --not --all
      
      Even though this is good enough for catching missing commits and trees,
      we show the object name but do not verify their existence, let alone their
      well-formedness, for the blob objects at the leaf level.
      
      Add a new "--verify-object" option so that we can catch missing and broken
      blobs as well.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5a48d240
    • J
      list-objects: pass callback data to show_objects() · 49473672
      Junio C Hamano 提交于
      The traverse_commit_list() API takes two callback functions, one to show
      commit objects, and the other to show other kinds of objects. Even though
      the former has a callback data parameter, so that the callback does not
      have to rely on global state, the latter does not.
      
      Give the show_objects() callback the same callback data parameter.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      49473672
  28. 23 8月, 2011 2 次提交