Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Dec 11, 2013
  1. @pclouds @gitster

    connected.c: add new variant that runs with --shallow-file

    pclouds committed with gitster
    Signed-off-by: Nguyễn Thái Ngọc Duy <>
    Signed-off-by: Junio C Hamano <>
Commits on May 28, 2013
  1. @pclouds @gitster

    clone: open a shortcut for connectivity check

    pclouds committed with gitster
    In order to make sure the cloned repository is good, we run "rev-list
    --objects --not --all $new_refs" on the repository. This is expensive
    on large repositories. This patch attempts to mitigate the impact in
    this special case.
    In the "good" clone case, we only have one pack. If all of the
    following are met, we can be sure that all objects reachable from the
    new refs exist, which is the intention of running "rev-list ...":
     - all refs point to an object in the pack
     - there are no dangling pointers in any object in the pack
     - no objects in the pack point to objects outside the pack
    The second and third checks can be done with the help of index-pack as
    a slight variation of --strict check (which introduces a new condition
    for the shortcut: pack transfer must be used and the number of objects
    large enough to call index-pack). The first is checked in
    check_everything_connected after we get an "ok" from index-pack.
    "index-pack + new checks" is still faster than the current "index-pack
    + rev-list", which is the whole point of this patch. If any of the
    conditions fail, we fall back to the good old but expensive "rev-list
    ..". In that case it's even more expensive because we have to pay for
    the new checks in index-pack. But that should only happen when the
    other side is either buggy or malicious.
    Cloning linux-2.6 over file://
            before         after
    real    3m25.693s      2m53.050s
    user    5m2.037s       4m42.396s
    sys     0m13.750s      0m16.574s
    A more realistic test with ssh:// over wireless
            before         after
    real    11m26.629s     10m4.213s
    user    5m43.196s      5m19.444s
    sys     0m35.812s      0m37.630s
    This shortcut is not applied to shallow clones, partly because shallow
    clones should have no more objects than a usual fetch and the cost of
    rev-list is acceptable, partly to avoid dealing with corner cases when
    grafting is involved.
    This shortcut does not apply to unpack-objects code path either
    because the number of objects must be small in order to trigger that
    code path.
    Signed-off-by: Nguyễn Thái Ngọc Duy <>
    Signed-off-by: Junio C Hamano <>
Commits on Sep 9, 2011
  1. @gitster

    check_everything_connected(): libify

    gitster committed
    Extract the helper function and the type definition of the iterator
    function it uses out of builtin/fetch.c into a separate source and a
    header file.
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.