Mercurial > evolve
view docs/tutorial/README.rst @ 3452:8275ef099135 stable
amend: query the wdir parent after taking lock (issue5266)
If we query wdir parent without taking a lock, that can lead to bugs because the
wdir parent can change is another process has changed the wdir parent.
One such example of this was issue 5266. When a user is running amend and that
amend is waiting for commit message, the user runs another amend which waits for
lock. The second amend is waiting for lock, but has already read the description
from the parent of working directory to use. Once the first amend completes the
wdir parent changes but we still have the description from an old wdir parent.
This patch fixes the bug by querying the description after taking lock.
Attempts were made to add test for this but the results were unstable because
they depend on time in which lock is released.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Mon, 22 Jan 2018 14:10:59 +0530 |
parents | aad37ffd7d58 |
children |
line wrap: on
line source
============================= Training supports ============================= Contributing ============ The main source for the supports is the `slides.md` but it doesn't contains all the source. The `slides.md` file contains several snippets that are replaced by other files at compilation time. For example: .. code:: markdown ~~~raw-file output/fix-a-bug-base.log ~~~ Will replace this three lines by the content of the file `output/fix-a-bug- base.log` which is generated when running the .t test file (see below for instruction how to do that). .. code:: markdown ~~~graphviz-file graphs/fix-bug-1.dot ~~~ Will replace this three lines by the svg rendering of the graphviz definition in the file `graphs/fix-bug-1.dot`. This file is generated when running the .t test file (see below for instruction how to do that). Environment preparation ======================= This training supports needs pandoc to compile. You'll need a copy of the Mercurial source in order to generate the training supports. You will also needs a functioning Python environment with the possibility to use `pip install` with your current user. In doubt, you can use a `virtualenv <https://virtualenv.pypa.io/en/stable/>`. You can then run the `prepare.sh` script that will configure the environment for you. Generating the supports ======================= First, you need to run a .t test file to generate a bunch of files. You can run the test file with this command: `python /PATH/TO/MERCURIAL/tests/run-tests.py -l test-training.t` It should have generated files in at least two directories: `graphs` and `output`. Finally, launch the `compile.sh` to generate the `index.html` output file.