Re: [PATCH v3 0/4] Improve push performance with lots of refs

2014-12-24 Thread brian m. carlson
On Tue, Dec 23, 2014 at 10:40:54AM -0800, Junio C Hamano wrote:
 You spell --thin-aggressive as two words, --thin --shallow, in
 this series, essentially, no?

Essentially, yes.  It became obligatory after I noticed the test
failure, since that test actually checks whether the remote side sends
a shallow-optimized pack.

 I think this is going in the right direction.  The shallow
 propagated on the wire from the fetcher is the right thing to use
 to make this decision.
 
 I wonder if the call to is_repository_shallow() is still necessary
 (read: I would prefer to see it go away) where we decide between
 --objects-edge and --objects-edge-aggressive.

Okay.  I'll try to push it up the stack a little bit.
-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187


signature.asc
Description: Digital signature


[PATCH v3 0/4] Improve push performance with lots of refs

2014-12-23 Thread brian m. carlson
This series contains patches to address a significant push performance
regression in repositories with large amounts of refs.  It avoids
performing expensive edge marking unless the repository is shallow.

The first patch in the series is a fix for a minor typo I discovered
when editing the documentation.  The second patch implements git
rev-list --objects-edge-aggressive, and the third patch ensures it's
used for shallow repos only.  The final patch ensures that sending packs
to shallow clients use --object-edge-aggressive as well.

The only change from v2 is the addition of a fourth patch, which fixes
t5500.  It's necessary because the test wants packs for fetches to
shallow clones to be minimal.

I'm not especially thrilled with having to provide a --shallow command
line argument, but the alternative is to buffer a potentially large
amount of data in order to determine whether the remote side is shallow.

The original fix was suggested by Duy Nguyen.

brian m. carlson (4):
  Documentation: add missing article in rev-list-options.txt
  rev-list: add an option to mark fewer edges as uninteresting
  pack-objects: use --objects-edge-aggressive only for shallow repos
  upload-pack: use --objects-edge-aggressive for shallow fetches

 Documentation/git-pack-objects.txt | 7 ++-
 Documentation/git-rev-list.txt | 3 ++-
 Documentation/rev-list-options.txt | 7 ++-
 builtin/pack-objects.c | 7 ++-
 list-objects.c | 4 ++--
 revision.c | 6 ++
 revision.h | 1 +
 upload-pack.c  | 4 +++-
 8 files changed, 32 insertions(+), 7 deletions(-)

-- 
2.2.1.209.g41e5f3a
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 0/4] Improve push performance with lots of refs

2014-12-23 Thread Junio C Hamano
brian m. carlson sand...@crustytoothpaste.net writes:

 The only change from v2 is the addition of a fourth patch, which fixes
 t5500.  It's necessary because the test wants packs for fetches to
 shallow clones to be minimal.

 I'm not especially thrilled with having to provide a --shallow command
 line argument, but the alternative is to buffer a potentially large
 amount of data in order to determine whether the remote side is shallow.

You spell --thin-aggressive as two words, --thin --shallow, in
this series, essentially, no?

I think this is going in the right direction.  The shallow
propagated on the wire from the fetcher is the right thing to use
to make this decision.

I wonder if the call to is_repository_shallow() is still necessary
(read: I would prefer to see it go away) where we decide between
--objects-edge and --objects-edge-aggressive.

Here is the relevant part from 4/4:

@@ -2711,7 +2714,7 @@ int cmd_pack_objects(int argc, const char **argv, const 
char *prefix)
argv_array_push(rp, pack-objects);
if (thin) {
use_internal_rev_list = 1;
-   argv_array_push(rp, is_repository_shallow()
+   argv_array_push(rp, is_repository_shallow() || shallow
? --objects-edge-aggressive
: --objects-edge);
} else

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html