Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Feb 2016 17:50:45 -0800] rev 28094
churn: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Feb 2016 17:34:32 -0800] rev 28093
children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Feb 2016 17:33:10 -0800] rev 28092
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Feb 2016 17:31:50 -0800] rev 28091
bugzilla: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Feb 2016 17:30:38 -0800] rev 28090
blackbox: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Feb 2016 17:29:39 -0800] rev 28089
acl: use absolute_import
Continuing the march towards Python 3.
Durham Goode <durham@fb.com> [Thu, 11 Feb 2016 17:23:10 -0800] rev 28088
checkunknown: audit path before checking if it's a file or link
Previously we would lstat the file to see if it was a file or a link before
attempting to process it. If the file happened to exist across a symlink, and if
that symlink was pointing to a network file system, that check could be very
expensive.
The new logic audit's the path to avoid symlinks before performing the lstat on
the file itself.
In our situation, this shaved 10 minutes off of certain hg updates.
300 files * (2 seconds - the network filesystem lookup time)
Durham Goode <durham@fb.com> [Thu, 11 Feb 2016 17:04:33 -0800] rev 28087
pathauditor: change parts verification order to be root first
Previously, when we verified the parts of a path in the auditor, we would
validate the deepest directory first, then it's parent, and so on up to the
root. If there happened to be a symlink in the chain, that meant our first check
would likely traverse that symlink. In some cases that symlink might point to
a network filesystem that is expensive, and therefore this simple check could be
very slow.
The fix is to check the path parts starting at the root and working our way
down.
This has a minor performance difference in that we used to be able to short
circuit from the audit if we reached a directory that had already been checked.
Now we can't, but the cost is N dictionary look ups, where N is the number of
parts in the path, which should be fairly minor.
Yuya Nishihara <yuya@tcha.org> [Tue, 19 Jan 2016 22:31:59 +0900] rev 28086
chg: forward job control signals to worker process (issue5051)
This is necessary to suspend/resume long pulls, interactive curses session,
etc.
The implementation is based on emacsclient, but our version doesn't test if
chg process is foreground or not before propagating SIGCONT. This is because
chg isn't always an interactive session. If we copy the SIGTTIN/SIGTTOU
emulation from emacsclient, non-interactive session can't be moved to a
background job.
$ chg pull
^Z
suspended
$ bg %1
[1] continued
[1] suspended (tty input) # wrong
https://github.com/emacs-mirror/emacs/blob/0e96320/lib-src/emacsclient.c#L1094
Yuya Nishihara <yuya@tcha.org> [Fri, 29 Jan 2016 22:52:16 +0900] rev 28085
chg: verify return value of sigaction() and sigemptyset()
They should never fail, but it couldn't hurt to be a paranoid.