Skip to content
Commits on Oct 31, 2009
  1. @spearce @gitster

    fetch: Allow transport -v -v -v to set verbosity to 3

    spearce committed with gitster Oct 30, 2009
    Helpers might want a higher level of verbosity than just +1 (the
    porcelain default setting) and +2 (-v -v).  Expand the field to
    allow verbosity in the range -1..3.
    Signed-off-by: Shawn O. Pearce <>
    CC: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Mar 5, 2008
  1. @spearce @gitster

    Teach git-fetch to exploit server side automatic tag following

    spearce committed with gitster Mar 3, 2008
    If the remote peer upload-pack process supports the include-tag
    protocol extension then we can avoid running a second fetch cycle
    on the client side by letting the server send us the annotated tags
    along with the objects it is packing for us.  In the following graph
    we can now fetch both "tag1" and "tag2" on the same connection that
    we fetched "master" from the remote when we only have L available
    on the local side:
             T - tag1          S - tag2
            /                 /
       L - o ------ o ------ B
        \                     \
         \                     \
          origin/master         master
    The objects for "tag1" are implicitly downloaded without our direct
    knowledge.  The existing "quickfetch" optimization within git-fetch
    discovers that tag1 is complete after the first connection and does
    not open a second connection.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
Commits on Oct 16, 2007
  1. @spearce

    Merge branch 'master' into db/fetch-pack

    spearce committed Oct 16, 2007
    There's a number of tricky conflicts between master and
    this topic right now due to the rewrite of builtin-push.
    Junio must have handled these via rerere; I'd rather not
    deal with them again so I'm pre-merging master into the
    topic.  Besides this topic somehow started to depend on
    the strbuf series that was in next, but is now in master.
    It no longer compiles on its own without the strbuf API.
    * master: (184 commits)
      Whip post maintenance series into shape.
      Minor usage update in setgitperms.perl
      manual: use 'URL' instead of 'url'.
      manual: add some markup.
      manual: Fix example finding commits referencing given content.
      Fix wording in push definition.
      Fix some typos, punctuation, missing words, minor markup.
      manual: Fix or remove em dashes.
      Add a --dry-run option to git-push.
      Add a --dry-run option to git-send-pack.
      Fix in-place editing functions in convert.c
      instaweb: support for Ruby's WEBrick server
      instaweb: allow for use of auto-generated scripts
      Add 'git-p4 commit' as an alias for 'git-p4 submit'
      hg-to-git speedup through selectable repack intervals
      git-svn: respect Subversion's [auth] section configuration values
      gtksourceview2 support for gitview
      fix contrib/hooks/post-receive-email hooks.recipients error message
      Support cvs via git-shell
      rebase -i: use diff plumbing instead of porcelain
Commits on Sep 19, 2007
  1. @spearce @gitster

    Ensure builtin-fetch honors {fetch,transfer}.unpackLimit

    spearce committed with gitster Sep 19, 2007
    The only way to configure the unpacking limit is currently through
    the .git/config (or ~/.gitconfig) mechanism as we have no existing
    command line option interface to control this threshold on a per
    invocation basis.  This was intentional by design as the storage
    policy of the repository should be a repository-wide decision and
    should not be subject to variations made on individual command
    Earlier builtin-fetch was bypassing the unpacking limit chosen by
    the user through the configuration file as it did not reread the
    configuration options through fetch_pack_config if we called the
    internal fetch_pack() API directly.  We now ensure we always run the
    config file through fetch_pack_config at least once in this process,
    thereby setting our unpackLimit properly.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
  2. @spearce @gitster

    Refactor struct transport_ops inlined into struct transport

    spearce committed with gitster Sep 19, 2007
    Aside from reducing the code by 20 lines this refactoring removes
    a level of indirection when trying to access the operations of a
    given transport "instance", making the code clearer and easier to
    It also has the nice effect of giving us the benefits of C99 style
    struct initialization (namely ".fetch = X") without requiring that
    level of language support from our compiler.  We don't need to worry
    about new operation methods being added as they will now be NULL'd
    out automatically by the xcalloc() we use to create the new struct
    transport we supply to the caller.
    This pattern already exists in struct walker, so we already have
    a precedent for it in Git.  We also don't really need to worry
    about any sort of performance decreases that may occur as a result
    of filling out 4-8 op pointers when we make a "struct transport".
    The extra few CPU cycles this requires over filling in the "struct
    transport_ops" is killed by the time it will take Git to actually
    *use* one of those functions, as most transport operations are
    going over the wire or will be copying object data locally between
    two directories.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
  3. @spearce @gitster

    Remove unnecessary 'fetch' argument from transport_get API

    spearce committed with gitster Sep 15, 2007
    We don't actually need to know at the time of transport_get if the
    caller wants to fetch, push, or do both on the returned object.
    It is easier to just delay the initialization of the HTTP walker
    until we know we will need it by providing a CURL specific fetch
    function in the curl_transport that makes sure the walker instance
    is initialized before use.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
  4. @spearce @gitster

    Remove pack.keep after ref updates in git-fetch

    spearce committed with gitster Sep 14, 2007
    If we are using a native packfile to perform a git-fetch invocation
    and the received packfile contained more than the configured limits
    of fetch.unpackLimit/transfer.unpackLimit then index-pack will output
    a single line saying "keep\t$sha1\n" to stdout.  This line needs to
    be captured and retained so we can delete the corresponding .keep
    file ("$GIT_DIR/objects/pack/pack-$sha1.keep") once all refs have
    been safely updated.
    This trick has long been in use with and its lower level
    helper git-fetch--tool as a way to allow index-pack to save the new
    packfile before the refs have been updated and yet avoid a race with
    any concurrently running git-repack process.  It was unfortunately
    lost when was converted to pure C and fetch--tool was
    no longer being invoked.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
  5. @spearce @gitster

    Simplify fetch transport API to just one function

    spearce committed with gitster Sep 14, 2007
    Commit walkers need to know the SHA-1 name of any objects they
    have been asked to fetch while the native pack transport only
    wants to know the names of the remote refs as the remote side
    must do the name->SHA-1 translation.
    Since we only have three fetch implementations and one of them
    (bundle) doesn't even need the name information we can reduce
    the code required to perform a fetch by having just one function
    and passing of the filtered list of refs to be fetched.  Each
    transport can then obtain the information it needs from that ref
    array to construct its own internal operation state.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.