From: Johan Herland <johan@herland.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Shawn Pearce <spearce@spearce.org>,
Johan Herland <johan@herland.net>,
git@vger.kernel.org, Jeff King <peff@peff.net>,
Johannes Sixt <j6t@kdbg.org>
Subject: [PATCHv3 0/9] Push limits
Date: Sun, 15 May 2011 23:37:11 +0200 [thread overview]
Message-ID: <1305495440-30836-1-git-send-email-johan@herland.net> (raw)
In-Reply-To: <201105151942.29219.johan@herland.net>
Here's the next iteration of what started out as a simple patch to let
the server refuse pushes that exceeded a configurable limit on the
#objects in a pack.
The current patch series allows limiting pushes by
- size of pack
- #objects in pack
- #commits in pack
The limits are controlled by corresponding (new) config variables:
- receive.packSizeLimit
- receive.objectCountLimit
- receive.commitCountLimit
Setting one or more of these config variables causes receive-pack to
advertise the corresponding (new) capabilities:
- limit-pack-size=<num>
- limit-object-count=<num>
- limit-commit-count=<num>
These capabilities are parsed by the send-pack client, which pass them
on to pack-objects, using the corresponding (mostly new) pack-objects
options:
--max-pack-size=<num> (extended to be usable in this context)
--max-object-count=<num> (new)
--max-commit-count=<num> (new)
When one or more of those options are given together with --stdout to
pack-objects, pack-objects will check the generated pack against those
limits, and abort the pack generation if any limit is exceeded.
In addition, the server will also verify the object count limit,
if enabled, and abort the push if the pack exceeds the limit.
Currently, the server cannot easily check the other two limits without
changing the pack format (left as an exercise to the reader... ;-]),
so exceeding the pack size limit or the commit count limit will not be
caught by the server.
Finally, a quick run-through of the patches:
- #1 is a very minor fix to the pack protocol docs.
- #2 attempts to retrieve and display the remote status, even when
pack-objects fail. This patch touches the same code as the recent
send-pack deadlock fixes, so I'd like Peff or JSixt to review them.
- #3 - #5 teaches pack-objects some new options to impose the above
limits on the generated pack.
- #6 contains some general preparation for the "limit-*" capabilities.
- #7 - #9 adds the new limits to receive-pack, send-pack, and the
corresponding protocol capabilites.
Have fun! :)
...Johan
Johan Herland (9):
Update technical docs to reflect side-band-64k capability in receive-pack
send-pack: Attempt to retrieve remote status even if pack-objects fails
pack-objects: Allow --max-pack-size to be used together with --stdout
pack-objects: Teach new option --max-object-count, similar to --max-pack-size
pack-objects: Teach new option --max-commit-count, limiting #commits in pack
receive-pack: Prepare for addition of the new 'limit-*' family of capabilities
send-pack/receive-pack: Allow server to refuse pushes with too many objects
send-pack/receive-pack: Allow server to refuse pushing too large packs
send-pack/receive-pack: Allow server to refuse pushes with too many commits
Documentation/config.txt | 35 ++++
Documentation/git-pack-objects.txt | 20 +++
Documentation/git-repack.txt | 6 +
Documentation/technical/pack-protocol.txt | 5 +-
Documentation/technical/protocol-capabilities.txt | 30 +++-
builtin/pack-objects.c | 53 +++++-
builtin/receive-pack.c | 45 +++++-
builtin/send-pack.c | 44 ++++--
cache.h | 2 +-
connect.c | 7 +-
git-repack.sh | 27 ++--
send-pack.h | 3 +
t/t5300-pack-object.sh | 121 +++++++++++++
t/t5400-send-pack.sh | 191 +++++++++++++++++++++
14 files changed, 543 insertions(+), 46 deletions(-)
--
1.7.5.rc1.3.g4d7b
next prev parent reply other threads:[~2011-05-15 21:37 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-13 16:54 [PATCH 2/2] receive-pack: Add receive.denyObjectLimit to refuse push with too many objects Johan Herland
2011-05-13 17:09 ` Junio C Hamano
2011-05-14 1:43 ` Johan Herland
2011-05-14 2:03 ` [PATCHv2 2/2] receive-pack: Add receive.objectCountLimit " Johan Herland
2011-05-14 2:30 ` Shawn Pearce
2011-05-14 13:17 ` Johan Herland
2011-05-14 22:17 ` Shawn Pearce
2011-05-15 17:42 ` Johan Herland
2011-05-15 21:37 ` Johan Herland [this message]
2011-05-15 21:37 ` [PATCHv3 1/9] Update technical docs to reflect side-band-64k capability in receive-pack Johan Herland
2011-05-15 21:37 ` [PATCHv3 2/9] send-pack: Attempt to retrieve remote status even if pack-objects fails Johan Herland
2011-05-16 4:07 ` Jeff King
2011-05-16 6:13 ` Jeff King
2011-05-16 6:39 ` Jeff King
2011-05-16 6:46 ` [PATCH 1/3] connect: treat generic proxy processes like ssh processes Jeff King
2011-05-16 19:57 ` Johannes Sixt
2011-05-16 23:12 ` Junio C Hamano
2011-05-17 5:54 ` Jeff King
2011-05-17 20:14 ` Johannes Sixt
2011-05-18 8:57 ` Jeff King
2011-05-16 6:52 ` [PATCH 2/3] connect: let callers know if connection is a socket Jeff King
2011-05-16 6:52 ` [PATCH 3/3] send-pack: avoid deadlock on git:// push with failed pack-objects Jeff King
2011-05-16 20:02 ` Johannes Sixt
2011-05-17 5:56 ` Jeff King
2011-05-18 20:24 ` [PATCH] Windows: add a wrapper for the shutdown() system call Johannes Sixt
2011-05-15 21:37 ` [PATCHv3 3/9] pack-objects: Allow --max-pack-size to be used together with --stdout Johan Herland
2011-05-15 22:06 ` Shawn Pearce
2011-05-16 1:39 ` Johan Herland
2011-05-16 6:12 ` Junio C Hamano
2011-05-16 9:27 ` Johan Herland
2011-05-15 21:37 ` [PATCHv3 4/9] pack-objects: Teach new option --max-object-count, similar to --max-pack-size Johan Herland
2011-05-15 22:07 ` Shawn Pearce
2011-05-15 22:31 ` Johan Herland
2011-05-15 23:48 ` Shawn Pearce
2011-05-16 6:25 ` Junio C Hamano
2011-05-16 9:49 ` Johan Herland
2011-05-15 21:37 ` [PATCHv3 5/9] pack-objects: Teach new option --max-commit-count, limiting #commits in pack Johan Herland
2011-05-15 21:37 ` [PATCHv3 6/9] receive-pack: Prepare for addition of the new 'limit-*' family of capabilities Johan Herland
2011-05-16 6:50 ` Junio C Hamano
2011-05-16 9:53 ` Johan Herland
2011-05-16 22:02 ` Sverre Rabbelier
2011-05-16 22:07 ` Junio C Hamano
2011-05-16 22:09 ` Sverre Rabbelier
2011-05-16 22:12 ` Junio C Hamano
2011-05-16 22:16 ` Sverre Rabbelier
2011-05-15 21:37 ` [PATCHv3 7/9] send-pack/receive-pack: Allow server to refuse pushes with too many objects Johan Herland
2011-05-15 21:37 ` [PATCHv3 8/9] send-pack/receive-pack: Allow server to refuse pushing too large packs Johan Herland
2011-05-15 21:37 ` [PATCHv3 9/9] send-pack/receive-pack: Allow server to refuse pushes with too many commits Johan Herland
2011-05-15 21:52 ` [PATCHv3 0/9] Push limits Ævar Arnfjörð Bjarmason
2011-05-14 17:50 ` [PATCHv2 2/2] receive-pack: Add receive.objectCountLimit to refuse push with too many objects Junio C Hamano
2011-05-14 22:27 ` Shawn Pearce
2011-05-13 18:20 ` [PATCH 2/2] receive-pack: Add receive.denyObjectLimit " Johannes Sixt
2011-05-14 1:49 ` Johan Herland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1305495440-30836-1-git-send-email-johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=peff@peff.net \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).