Justin Tobler <jltobler@xxxxxxxxx> writes: > During git-receive-pack(1), connectivity of the object graph is > validated to ensure that the received packfile does not leave the > repository in a broken state. This is done via git-rev-list(1) and > walking the objects which can be expensive for large repositories. > > Generally, this check is critical to avoid an incomplete received > packfile from corrupting a repository. Server operators may have > additional knowledge though around exactly how Git is being used on the > server-side which can be used to facilitate more efficient connectivity > computatation of incoming objects. > s/computatation/computation > > For example, if it can be ensured that all objects in a repository are > connected and do not depend on any missing objects, the connectivity of > newly written objects can be checked by walking the object graph > containing only the new objects from the updated tips and identifying > the missing objects which represent the boundary between the new objects > and the repository. These boundary objects can be checked in the > canonical repository to ensure the new objects connect as expected and > thus avoid walking the rest of the object graph. > > Git itself cannot make the guarantees required for such an optimization > as it is possible for a repository to contain an unreachable object that > references a missing object without the repository being considered > corrupt. > > Introduce the --skip-connectivity-check option for git-receive-pack(1) > which bypasses this connectivity check to give more control to the > server-side. Note that without proper server-side validation of newly > received objects handled outside of Git, usage of this option risks > corrupting a repository. > I don't have any comments for the patch itself, looked good to me!
Attachment:
signature.asc
Description: PGP signature