Kevin Bullock <kbullock@ringworld.org> [Tue, 12 Feb 2013 16:32:14 +0000] rev 18688
commit: factor out status printing into a helper function
We create a new function commitstatus() in cmdutil that handles printing
the status message(s) after a commit. This will allow other commit-like
commands to use it, and in particular is step 2 towards removing
backout's call to commands.commit.
Kevin Bullock <kbullock@ringworld.org> [Tue, 12 Feb 2013 16:05:00 +0000] rev 18687
backout: remove unnecessary dict copy
This is step 1 to remove backout's call to commands.commit. We don't use
the options again anywhere below except for backout's own purposes,
specifically choosing a merge tool, so we just write the commit options
in directly.
Kevin Bullock <kbullock@ringworld.org> [Tue, 12 Feb 2013 15:47:30 +0000] rev 18686
backout: remove unnecessary frobbing of addremove option
There's no way for addremove to show up in backout's opts dictionary. It
was being set manually because cmdutil.commit expected it to be there
(and would throw an exception if it wasn't). This was fixed waaaaaaay
back in:
changeset: 5829:
784073457a0f
user: Kirill Smelkov <kirr@mns.spb.ru>
date: Thu Jan 10 12:07:18 2008 +0300
summary: cmdutil.commit: extract 'addremove' from opts carefully
Kevin Bullock <kbullock@ringworld.org> [Tue, 12 Feb 2013 15:07:17 +0000] rev 18685
backout: use cmdutil.revert directly instead of commands.revert
Before this change, backout would explicitly set the options it passed
to commands.revert in order to fall thru most of its logic and call
cmdutil.revert. This change makes it clearer what backup is trying to
accomplish and makes it robust against changes to the revert command.
Kevin Bullock <kbullock@ringworld.org> [Wed, 13 Feb 2013 15:09:43 -0600] rev 18684
merge with stable
Simon Heimberg <simohe@besonet.ch> [Wed, 13 Feb 2013 21:51:47 +0100] rev 18683
check-code: warn about line glob match with no glob character (?*/)
Simon Heimberg <simohe@besonet.ch> [Wed, 13 Feb 2013 22:05:30 +0100] rev 18682
tests: remove glob from output lines containing no glob character
Simon Heimberg <simohe@besonet.ch> [Mon, 15 Oct 2012 23:28:45 +0200] rev 18681
tests: inform on Windows about unnecessary glob lines
When glob lines directly match on windows, "/" (and not "\") was output in the
path on the line. No glob matching is necessary in this case.
The test output will look like this (when 5 tests have passed and no 4 has an
unnecessary glob):
...
Info, unnecessary glob: info about some/thing (glob)
..
Simon Heimberg <simohe@besonet.ch> [Wed, 13 Feb 2013 21:58:52 +0100] rev 18680
tests: quickly check if the glob line already matches the output
This happens when a path with "/" as only glob char is matched on a non windows
platform. (Currently one third of all glob matches.)
The slowdown on windows and the speedup on other os are neglectable.
Simon Heimberg <simohe@besonet.ch> [Wed, 13 Feb 2013 12:35:57 +0100] rev 18679
tests: append glob to filename output when required (windows)
This lines were introduced in
cd403d6d96ef and made the test fail on
windows.
Bryan O'Sullivan <bryano@fb.com> [Wed, 13 Feb 2013 12:20:10 -0800] rev 18678
util: make ensuredirs safer against races
Durham Goode <durham@fb.com> [Wed, 13 Feb 2013 11:07:01 -0800] rev 18677
blackbox: only show new heads on incoming
The blackbox was logging every head after every incoming group.
Now we only log the heads that have changed.
Added a test. Moved the hooks test to the bottom of the file since
the hooks interfer with the tests after it.
Bryan O'Sullivan <bryano@fb.com> [Wed, 13 Feb 2013 10:54:52 -0800] rev 18676
blackbox: fix copyright
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Feb 2013 16:02:35 -0800] rev 18675
blackbox: fix a failing pyflakes test
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 13:35:30 -0800] rev 18674
blackbox: tests for the blackbox extension
A few tests to cover the blackbox extension. Covers commands, hooks, and
incoming changes.
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:09:46 -0800] rev 18673
blackbox: adds a 'blackbox' command for viewing recent logs
Adds a 'hg blackbox' command for viewing the latest entries in the blackbox log.
By default it shows the last 10 entries, but -l allows the user to specify.
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:04:48 -0800] rev 18672
blackbox: log incoming changes via ui.log()
Logs incoming changes to a repo to ui.log(). Includes the number of changes
and the hashes of the heads after the new changes.
Example log line:
2013/02/09 08:35:19 durham> 1 incoming changes - new heads:
cb9a9f314b8b
Currently the blackbox logs the unix user that is performing the push/pull.
It would be nice to log the http authorized user as well so it works with
hgweb, but that's outside the scope of this commit.
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:04:32 -0800] rev 18671
blackbox: logs python and extension hooks via ui.log()
Logs python and extension hooks to ui.log() for viewing in the blackbox.
Example log lines:
2013/02/09 08:35:19 durham> pythonhook-preupdate: hgext.eol.preupdate finished in 0.01 seconds
2013/02/09 08:35:19 durham> exthook-update: echo hooked finished in 0.02 seconds
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:04:14 -0800] rev 18670
blackbox: log the commands that are run
Uses ui.log to log which commands are run, their exit code, the time taken,
and any unhandled exceptions thrown.
Example log lines:
2013/02/09 08:35:19 durham> add foo
2013/02/09 08:35:19 durham> add exited 0 after 0.02 seconds
Updates the progress tests because they use a mocked time.time() which these
changes affect.
Durham Goode <durham@fb.com> [Tue, 12 Feb 2013 14:08:33 -0800] rev 18669
blackbox: adds a blackbox extension
Adds a blackbox extension that listens to ui.log() and writes the messages to
.hg/blackbox.log. Future commits will use ui.log() to log commands, unhandled
exceptions, incoming changes, and hooks. The extension defaults to logging
everything, but can be configured via blackbox.track to only log certain events.
Log lines are of the format: "date time user> message"
Example log line:
2013/02/09 08:35:19 durham> 1 incoming changes - new heads:
d84ced58aaa
Bryan O'Sullivan <bryano@fb.com> [Mon, 11 Feb 2013 16:15:12 -0800] rev 18668
scmutil: create directories in a race-safe way during update
With the new parallel update code, it is possible for multiple
workers to try to create a hierarchy of directories at the same
time. This is hard to trigger in general, but most likely during
initial checkout.
To deal with these races, we introduce a new ensuredirs function
whose contract is to ensure that a directory hierarchy exists - it
will ignore a failure that implies that the desired directory already
exists.
Bryan O'Sullivan <bryano@fb.com> [Mon, 11 Feb 2013 14:50:54 -0800] rev 18667
Merge
Idan Kamara <idankk86@gmail.com> [Sat, 09 Feb 2013 19:02:45 +0200] rev 18666
test-atomictempfile: convert to unit test
Idan Kamara <idankk86@gmail.com> [Sat, 09 Feb 2013 19:13:39 +0200] rev 18665
tests: add a test runner utility that prints nothing when all tests pass
This will be used to run tests through run-tests, which will expect no output
for a unit test that passes successfully.
The motivation for using unit tests instead of the current Python tests is that
they don't require an output file for comparison and that they're easier to write
because of the available tools from unittest (setup, asserts).
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sun, 10 Feb 2013 13:14:31 +0100] rev 18664
hgweb: consistent author name width
Paper & coal use a sligtly shorter name length of 12em in the log view
than gitweb's 15em. Names too long for 12em is not entirely unheard
of, and hence increasing the length is appropriate; hgweb should
remain usable on 1024x768.
Durham Goode <durham@fb.com> [Sun, 10 Feb 2013 12:23:39 -0800] rev 18663
dirstate: fix generator/list error when using python 2.7
util.statfiles returns a generator on python 2.7 with c extensions disabled.
This caused util.statfiles(...) [0] to break in tests. Since we're only
stat'ing one file, I just changed it to call lstat directly.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 11 Feb 2013 16:21:48 +0100] rev 18662
mq: comply with filtering when injecting fake tags (
issue3812)
mq was injecting fake tags whenever the revisions were accessible
to the filtering level.
This issue impacts hgweb since it's common to have "secret" mq
patches. As secret changesets are filtered by hgweb, the tags
computation could break.
David Schleimer <dschleimer@fb.com> [Fri, 08 Feb 2013 05:36:08 -0800] rev 18661
commit: factor out post-commit cleanup into workingctx
This pulls some of the logic for the cleanup that needs to happen
after a commit has been made otu of localrepo.commit and into
workingctx. This is part of a larger refactoring effort that will
eventually allow us to perform some types of merges in-memory.
David Schleimer <dschleimer@fb.com> [Fri, 08 Feb 2013 05:36:08 -0800] rev 18660
localrepo: use workingctx for validation in commit
This changes localrepo.commit to use the workingctx it creates form
the munged output of localrepo.status while running some precommit
validation. Specifically, it uses functions that were already present
on the workingctx. I believe this is a net readabilty improvement,
and that this makes these lines consistent with the refactoring in a
subsequent patch that pulls some of the validation logic into
workingctx so that it can be reused elsewhere.
David Schleimer <dschleimer@fb.com> [Fri, 08 Feb 2013 05:36:07 -0800] rev 18659
localrepo: create context used for actual commit earlier
localrepo.commit creates a workingctx, calls self.status, does some
munging on the changes status returns, does some validation on those
changes, and then creates a new workingctx from the changes. This
moves the creation of the new workginctx ahead of some validation,
with the intention of refactoring some of that validation logic into
the workingctx, so that it can be reused elsewhere.