Mercurial > hg
view contrib/tcsh_completion_build.sh @ 39665:c73c7653dfb9
narrow: use diffmatcher to send only new filelogs in non-ellipses widening
Before this patch, when we widen a non-ellipses narrow clone, we downloads all
the filelogs matching the resulting new matcher. This is same as the ellipses
case but can be improved because, we don't pull new csets in non-ellipses cases,
we can only download the new added files instead of downloading all the files
which matches the new matcher.
So, we only download files which matches the new matcher but does not matches
the old matcher. There exists a match.differencematcher() which is used here.
This will lead to significant amount of speedup in extending a non-ellipses
narrow copy on large repos because we will download and process only the new
required filelogs.
The tests changes demonstrate that we are downloading now less files.
Thanks to Augie for pointing that functionality of differencematcher exists in
core.
Differential Revision: https://phab.mercurial-scm.org/D4614
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Mon, 17 Sep 2018 15:55:18 +0300 |
parents | 2616325766e3 |
children |
line wrap: on
line source
#!/bin/sh # # tcsh_completion_build.sh - script to generate tcsh completion # # # Copyright (C) 2005 TK Soh. # # This is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your # option) any later version. # # # Description # ----------- # This script generates a tcsh source file to support completion # of Mercurial commands and options. # # Instruction: # ----------- # Run this script to generate the tcsh source file, and source # the file to add command completion support for Mercurial. # # tcsh% tcsh_completion.sh FILE # tcsh% source FILE # # If FILE is not specified, tcsh_completion will be generated. # # Bugs: # ---- # 1. command specific options are not supported # 2. hg commands must be specified immediately after 'hg'. # tcsh_file=${1-tcsh_completion} hg_commands=`hg --debug help | \ sed -e '1,/^list of commands:/d' \ -e '/^enabled extensions:/,$d' \ -e '/^additional help topics:/,$d' \ -e '/^ [^ ]/!d; s/[,:]//g;' | \ xargs -n5 | \ sed -e '$!s/$/ \\\\/g; 2,$s/^ */ /g'` hg_global_options=`hg -v help | \ sed -e '1,/global/d;/^ *-/!d; s/ [^- ].*//' | \ sed -e 's/ *$//; $!s/$/ \\\\/g; 2,$s/^ */ /g'` hg_version=`hg version | sed -e '1q'` script_name=`basename $0` cat > $tcsh_file <<END # # tcsh completion for Mercurial # # This file has been auto-generated by $script_name for # $hg_version # # Copyright (C) 2005 TK Soh. # # This is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your # option) any later version. # complete hg \\ 'n/--cwd/d/' 'n/-R/d/' 'n/--repository/d/' \\ 'C/-/($hg_global_options)/' \\ 'p/1/($hg_commands)/' END