##// END OF EJS Templates
changegroup: store old heads as a set...
changegroup: store old heads as a set Previously, the "oldheads" variable was a list. On a repository at Mozilla with 46,492 heads, profiling revealed that list membership testing was dominating execution time of applying small changegroups. This patch converts the list of old heads to a set. This makes membership testing significantly faster. On the aforementioned repository with 46,492 heads: $ hg unbundle <file with 1 changeset> before: 18.535s wall after: 1.303s Consumers of this variable only check for truthiness (`if oldheads`), length (`len(oldheads)`), and (most importantly) item membership (`h not in oldheads` - which occurs twice). So, the change to a set should be safe and suitable for stable. The practical effect of this change is that changegroup application and related operations (like `hg push`) no longer exhibit an O(n^2) CPU explosion as the number of heads grows.

File last commit:

r26781:1aee2ab0 default
r31587:ed5b2587 4.1.2 stable
Show More
hgeditor
56 lines | 1.2 KiB | text/plain | TextLexer
Thomas Arendsen Hein
Remove bashisms and use /bin/sh instead of /bin/bash....
r544 #!/bin/sh
mpm@selenic.com
Add $HGEDITOR hook and example script...
r186 #
Benoit Boissinot
remove the gpg stuff from hgeditor (superseded by the signing extension)...
r1599 # This is an example of using HGEDITOR to create of diff to review the
Mads Kiilerich
spelling: trivial spell checking
r26781 # changes while committing.
Matt Mackall
Turn off signing with hgeditor by default...
r684
Radoslaw "AstralStorm" Szkodzinski
hgeditor: Remove EMAIL default for HGUSER, comment editor selection ...
r666 # If you want to pass your favourite editor some other parameters
# only for Mercurial, modify this:
Thomas Arendsen Hein
Replaced mktemp and usage of ${par:=word}.
r796 case "${EDITOR}" in
"")
EDITOR="vi"
;;
Thomas Arendsen Hein
Improved hgeditor:...
r348 emacs)
EDITOR="$EDITOR -nw"
;;
gvim|vim)
EDITOR="$EDITOR -f -o"
;;
esac
Thomas Arendsen Hein
Replaced mktemp and usage of ${par:=word}.
r796
HGTMP=""
cleanup_exit() {
rm -rf "$HGTMP"
}
Thomas Arendsen Hein
Fixes and cleanups to hgeditor:...
r754 # Remove temporary files even if we get interrupted
Thomas Arendsen Hein
Cleaned up trap handling:...
r831 trap "cleanup_exit" 0 # normal exit
Javi Merino
Fixed a bashism with trap numbers in hgeditor....
r11190 trap "exit 255" HUP INT QUIT ABRT TERM
Thomas Arendsen Hein
Replaced mktemp and usage of ${par:=word}.
r796
Javi Merino
Fixed a bashism with the use of $RANDOM in hgeditor....
r11266 HGTMP=$(mktemp -d ${TMPDIR-/tmp}/hgeditor.XXXXXX)
[ x$HGTMP != x -a -d $HGTMP ] || {
echo "Could not create temporary directory! Exiting." 1>&2
exit 1
Thomas Arendsen Hein
Replaced mktemp and usage of ${par:=word}.
r796 }
Thomas Arendsen Hein
Fixes and cleanups to hgeditor:...
r754 (
grep '^HG: changed' "$1" | cut -b 13- | while read changed; do
Thomas Arendsen Hein
hgeditor: Use $HG to run 'hg diff' (see 849f011dbf79)
r4687 "$HG" diff "$changed" >> "$HGTMP/diff"
Thomas Arendsen Hein
Fixes and cleanups to hgeditor:...
r754 done
)
Thomas Arendsen Hein
Improved hgeditor:...
r348
Benoit Boissinot
remove the gpg stuff from hgeditor (superseded by the signing extension)...
r1599 cat "$1" > "$HGTMP/msg"
Matt Mackall
Turn off signing with hgeditor by default...
r684
Will Maier
Find the system's MD5 binary....
r3025 MD5=$(which md5sum 2>/dev/null) || \
Thomas Arendsen Hein
Kill trailing spaces
r4659 MD5=$(which md5 2>/dev/null)
Will Maier
Find the system's MD5 binary....
r3025 [ -x "${MD5}" ] && CHECKSUM=`${MD5} "$HGTMP/msg"`
Thomas Arendsen Hein
Don't show the diff in hgeditor if there are no changes in file contents.
r1009 if [ -s "$HGTMP/diff" ]; then
$EDITOR "$HGTMP/msg" "$HGTMP/diff" || exit $?
else
$EDITOR "$HGTMP/msg" || exit $?
fi
Will Maier
Find the system's MD5 binary....
r3025 [ -x "${MD5}" ] && (echo "$CHECKSUM" | ${MD5} -c >/dev/null 2>&1 && exit 13)
Thomas Arendsen Hein
Fixes and cleanups to hgeditor:...
r754
Benoit Boissinot
remove the gpg stuff from hgeditor (superseded by the signing extension)...
r1599 mv "$HGTMP/msg" "$1"
Thomas Arendsen Hein
Improved hgeditor:...
r348
Thomas Arendsen Hein
Cleaned up trap handling:...
r831 exit $?