fsmonitor: add new watchman notifications to fsmonitor extension
The fsmonitor extension currently sends state-enter and state-leave
notifications to watchman on the update operation. This commit creates
additional notifications for the following events :
- transaction creation and commit/abort. A state-enter notification will be
sent when a transaction is created. It will provide the working copy
parent's hash. A state-leave notification will be sent when the
transaction is committed or aborted. It will provide the working copy
parent's hash.
- calls to set-parent will cause state-enter and state-leave notifications
to be sent. The state-enter notification will be sent prior to the
set-parent operation and the working copy parent's hash will be provided at
this time. The state-leave notification will be sent after the set-parent
operation completes providing the working copy parents hash.
Test Plan:
tested on dev server to check that necessary notifications were sent/received
Differential Revision: https://phab.mercurial-scm.org/D989
#require bzr
$ . "$TESTDIR/bzr-definitions"
$ cat > ghostcreator.py <<EOF
> import sys
> from bzrlib import workingtree
> wt = workingtree.WorkingTree.open('.')
>
> message, ghostrev = sys.argv[1:]
> wt.set_parent_ids(wt.get_parent_ids() + [ghostrev])
> wt.commit(message)
> EOF
ghost revisions
$ mkdir test-ghost-revisions
$ cd test-ghost-revisions
$ bzr init -q source
$ cd source
$ echo content > somefile
$ bzr add -q somefile
$ bzr commit -q -m 'Initial layout setup'
$ echo morecontent >> somefile
$ $PYTHON ../../ghostcreator.py 'Commit with ghost revision' ghostrev
$ cd ..
$ hg convert source source-hg
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Initial layout setup
0 Commit with ghost revision
$ glog -R source-hg
o 1@source "Commit with ghost revision" files: somefile
|
o 0@source "Initial layout setup" files: somefile
$ cd ..