Summary: Simple rename to make it clear what this is testing
Test Plan: Simple rename, no test change
Reviewers: ericsumner
Differential Revision: https://phabricator.fb.com/D2793594
Summary:
Bundle format seems to have changed in core, test-writecg2's output
consequently changed. We have been hotfixing this test for the past two
releases, this patch fixes it in trunk.
Test Plan: Test is passing
Reviewers: ericsumner
Differential Revision: https://phabricator.fb.com/D2793776
Summary:
hg backups has been broken since mid october (see 2b16ffcd3 in core)
This patch fixes it and adds a test for it.
Test Plan: Adds a new test
Reviewers: #sourcecontrol, ttung
Differential Revision: https://phabricator.fb.com/D2788217
A warning was there because core was using a deprecated API for writing
bookmarks. Now that the issue is fixed in core, this test has to be updated to
remove the warning.
Shipping your own `run-tests.py` is a bad practice as the custom version will
slowly diverge from important fixes and upgrade from the upstream one. Using the
core one is simple and we should use it.
I'm not convinced by the arguments used in the re-installation (e221a52),
- It is easy to run the test against any version of Mercurial including the
installed one using `--with-hg=`,
- If you have people contributing to this level of extensions, having them
clone Mercurial is fairly cheap. If this is really seen a blocker, completing
the Mercurial's upstream plan to have run-tests.py installable as a developer
tools seems a cheap way to move forward instead,
- If you own a complex installation with multiple Mercurial related dependencies,
you already have a way to handle version dependency in this context and your
contributor can use this very same infrastructure to make sure they run at the
right version. And they probably should use it already anyway to make sure
they are testing the stack properly.
This changesets also install a README explaining how to obtains the test runner
and runs it against various Mercurial version.
Summary: D2745769 added a enabled=True flag, which needs to be in the test.
Test Plan: passed unit test.
Reviewers: #sourcecontrol, durham
Reviewed By: durham
Subscribers: mitrandir
Differential Revision: https://phabricator.fb.com/D2773075
Signature: t1:2773075:1450463047:9a29f677bf5bec7b9b1789ec2791ead5ebfd8a7a
Blame Revision: D2745769
Summary:
There were some comments under my diff after landing. Included:
* Old "Task ID" syntax
* Removing the "T" prefix
* Fixing the copypasted docstring
Test Plan: tests
Reviewers: #sourcecontrol, rmcelroy, ttung
Reviewed By: rmcelroy
Differential Revision: https://phabricator.fb.com/D2765417
Signature: t1:2765417:1450294877:4a50ecfdb1fb295ffaf01ecee6fe257b52e359bc
Summary:
Verified that the issue does occur.
Verified that using `hg shelve -d my_shelve_name` works for default and arbitrary shelve name.
Test Plan: Updated the tests for githelp
Reviewers: ericsumner, durham
Reviewed By: durham
Subscribers: de-engagement-diffs@
Differential Revision: https://phabricator.fb.com/D2762983
Tasks: 7632472
Signature: t1:2762983:1450289196:f25d757d158d110e8fc5503f974170c4a9892718
Summary:
When pushing a rewritten merge commit, we were trying to look up it's original
parent in the current repo (which no longer had that commit). We need to look in
the bundle repo instead.
Test Plan: Added a test. Also tried it manually on one of the hg servers
Reviewers: #sourcecontrol, ttung, mitrandir
Reviewed By: mitrandir
Differential Revision: https://phabricator.fb.com/D2763182
Signature: t1:2763182:1450230086:c560d4b8bbfe5d5387e23c1cc2e09109f49f255b
Summary:
Devel warnings are pointing at issues in the code that need to be fixed. The
right way to get the tests to pass is to fix the warning cause, not to the
warning to the tests.
This practically backout an handful of test that added such warning output in
the test.
Test Plan:
Well, test are now broken to match the state of the borken code.
Reviewers: lcharignon
Differential Revision: https://phabricator.fb.com/D2760523
Summary: Our extensions dependecies are getting tricky. Let's make it right. (the logic still need to be tested - it worked on one very simple example so far).
Test Plan: no tests yet
Reviewers: pyd, lcharignon, rmcelroy
Reviewed By: rmcelroy
Subscribers: lcharignon, #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2710943
Signature: t1:2710943:1449881799:16abe49529aa79df7d6ebe84a0bae0c0970b419a
Summary:
matchfn actually accepts just a single argument (the file name), so our
extramatches function was incorrect. The test didn't hit it because the matcher
had no patterns (it only had explicit files), so it never executed the matchfn.
Test Plan: I updated the tests with a pattern to force this code path to be hit.
Reviewers: #sourcecontrol, ttung
Differential Revision: https://phabricator.fb.com/D2750982
Summary:
The goal of this extensions is to create obsolescence markers locally for
commits previously landed.
It uses the phabricator revision number in the commit message to detect the
relationship between a draft commit and its landed counterpart.
Thanks to these markers, less information is displayed and rebases can have
less irrelevant conflicts.
Test Plan: Added a new test
Reviewers: pyd, ericsumner, durham
Differential Revision: https://phabricator.fb.com/D2665923
Summary: Copytracing works fine unless the ancestor is on the p2() branch, in that case fall back to old copytracing without bothering the user with an error
Test Plan: Former tests still pass and merge cases say the same with or without copytrace the extension
Reviewers: #sourcecontrol, rmcelroy, ttung
Differential Revision: https://phabricator.fb.com/D2729604
Tasks: 8660367
Summary:
In case of crash, instead of printing an ugly stack trace, we want to
paste the message to some pastebin-like places. This extension allows
us to do so.
Test Plan:
1. Add `raise 1` to a random hg command, for example, `hg status`
2. Modify `~/.hgrc`:
```
[errorredirect]
script = (echo HEADER; cat; echo FOOTER) | cat > /tmp/a && echo '/tmp/a written'
```
3. Run `hg status` and confirm the shell script works and no stack trace is printed
Also, run `test-errorredirect.t`
Reviewers: rmcelroy, #sourcecontrol, ttung
Reviewed By: ttung
Differential Revision: https://phabricator.fb.com/D2715697
Tasks: 9259456
Signature: t1:2715697:1449173573:7a5abdb3cf3087128bdf688a596d97bb13f27783
Summary: Using it on 10000 commits makes SQL crashs because the queries are too big. Modifies buildstate to check if the oldest and most recent commits on the public branch, rebased to, are in the database, if yes: Assumes all of the nodes in between are. If not: goes through all the nodes by 1000 to check/retrieve them from the server. To avoid double checking if the hash is present in the database, during a retrievepkg, missing hashes are manually added and never asked to the server (this should mostly never happem)
Test Plan: The former tests still pass and buildstate doesn't raise an exception anymore when rebasing over 10000 commits
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2718840
Tasks: 8660367
Summary: adds a 'fillmvdb' command to backfill the move db with --start and --stop options
Test Plan: tests with several --start nodes and one --stop revision
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2713126
Tasks: 8659945
Summary: The interactive rebase which is using new histedit base keyword underneath.
Test Plan: see tests
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Subscribers: durham, rmcelroy
Differential Revision: https://phabricator.fb.com/D2705834
Signature: t1:2705834:1449024840:c29ee246492c5e7c9e595b65ba256e5326ef631d
Summary:
Resolve the revset configured, and use that to insulate revs from pruning.
Built a unit test.
Test Plan: passed unit tests.
Reviewers: rmcelroy, mpm, pyd, durham
Reviewed By: durham
Subscribers: mitrandir, akushner
Differential Revision: https://phabricator.fb.com/D2573162
Signature: t1:2573162:1449076016:9353a80b8801accfe634990285496fab44a66d6e
Summary:
# Intercept manifest.revision(..). The cache is checked, and if it's not there, resume the normal path. Once the normal path is complete, write to the cache.
# Intercept manifest._addrevision(..). This may be used in bulk operations, such as pull. Since we don't want to flood the cache with a lot of entries we may not care about, we record all the nodes that are added. We add an atexit hook to then record the last N nodes to the cache.
# Writes to the cache are done to a temp file, then atomically renamed into place.
# On reads, we run the checkhash function. This costs us ~100ms per manifest in fbsource, but ensures a corrupt cache doesn't break us. Love to debate this matter.
# On each batch of writes, we spawn a background copy of ourselves to prune the cache. We use the mtime of a marker file to determine the last time the prune happened. We calculate the odds that we should be doing the prune using a couple constants and the time since the last prune. If another prune happened recently, the dominant factor is a small probability that we run the prune, regardless of the interval. If no prune has happened recently, the dominant factor is the seconds-since-prune configuration variable.
Some performance numbers (all averaged across 10 runs)
* diff between two revs: 2.29s without caching; 1.75s with caching
* rebasing 4 diffs: 12.1s without caching; 10.7s with caching
Test Plan: passed the rudimentary correctness unit tests. with fbsource, ran a small handful of commands without anybody tripping and falling.
Reviewers: rmcelroy, ericsumner, mpm, pyd, durham
Reviewed By: durham
Subscribers: akushner, mitrandir, cdelahousse
Differential Revision: https://phabricator.fb.com/D2564490
Signature: t1:2564490:1449075868:70974c62e6bff6521b6f500b5bff3a260ddd6c6d
Summary:
Forbit paths starting with / in sparse file and using the command
line arguments. Also fix a typo (util.abort vs util.Abort)
Test Plan: added test
Reviewers: durham
Differential Revision: https://phabricator.fb.com/D2696541
Summary: running the tests through dummy ssh to test bundle2
Test Plan: the old tests pass, the modified one now uses remote
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2705240
Tasks: 8660367
Summary: People complain that `hg status` won't tell them if the repo is in a interrupted update state. This diff adds it.
Test Plan:
1. `cd` to some big project
2. Pick a random old revision from `hg log`, say `fdaa3224d9bd`.
3. `hg update fdaa3224d9bd`
4. Shortly after, in another terminal, `pkill -9 hg`
5. Check `hg status` will print:
```
# The repository is in an unfinished *update* state.
# To continue: hg update fdaa3224d9bd
# To abort: hg update .
```
Also run `run-tests.py test-morestatus.t`.
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Subscribers: durham, pyd, cdelahousse, lcharignon
Differential Revision: https://phabricator.fb.com/D2691730
Tasks: 9200036
Signature: t1:2691730:1448496639:135542e2698e44a824debd74d6393b98cc74e014
Summary: people have complained that this did not have a sensible default
Test Plan: added a new test
Reviewers: #sourcecontrol, cdelahousse
Reviewed By: cdelahousse
Subscribers: cdelahousse
Differential Revision: https://phabricator.fb.com/D2698778
Tasks: 9175076
Signature: t1:2698778:1448503081:defe2ec4a79b0a899107948472815a54a98d1fff
Summary: Making retrievedatapkg use checkpresence to check if the hashes are in the local database before it tries to remove the data. This avoids having to recurse on the function and having custom "ask to server"/"add data" for that function. Plus, if the node is not public, no data is requested from the server.
Test Plan: The former tests still pass, with one request to the server less for the modified test, since the node is draft.
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2697356
Tasks: 8660367
Summary:
During a rebase, if the data requested by checkpresence is not present in the server, manually add it to the local database to avoid reasking it during retrievedatapkg
This case should mostly never happen though.
Test Plan: The former tests still work. I added one for which the server has no data. It requests the data to the server twice: once for the branch it is rebased to (check presence) and once for the rebased branch (retrievedatapkg) instead of thrice (check presence and retrievedatapkg for the branch it is rebased to)
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2696664
Tasks: 8660367
Summary:
`os.path.dirname('/')` returns `'/'`, so for an absolute path you end up with
infinite recursion here. Switch to testing for a basename instead (works on Windows with drive letters too). Absolute directories outside of the repository are rejected elsewhere.
Added a testcase that demonstrates absolute paths now work and paths outside the repository are rejected to detect future regressions.
Test Plan:
Run the test suite:
cd tests && python run-tests.py test-sparse*
Reviewers: rmcelroy, durham
Reviewed By: rmcelroy
Differential Revision: https://phabricator.fb.com/D2690822
Tasks: 9156031
Signature: t1:2690822:1448475411:108ac635951cdb9d05329e0b91a9db6c24e8a75f
Summary:
Previously, only commiting/amending a certain file would break the dirsync,
since it would apply the mirror to the working copy but it would not perform the
amend.
The fix is to extend the commit's matcher to include the files that are mirrors
of what is already being included in the commit.
Test Plan: Added tests
Reviewers: #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2696486
Summary:
This diff adds a -x flag to the rebase and histedits commands to only move the
current bookmark. It shows an issue with inhibit that we have to address and
can be extended to other commands.
Test Plan:
Adds a test, shows an issue with the way inhibit handles the
rebase set
Reviewers: pyd, mitrandir, durham
Differential Revision: https://phabricator.fb.com/D2680168
Summary:
The existing upstream heurestic for determining when to accept a delta and when
not to takes into account the total ondisk distance from the chain base to the
current rev. In a large repo with 10+ active branches, its pretty easy to get
into a situation where a few full text entries are written, and suddenly new
entries are deciding they need to be full text too because they are too far from
their root, which in turn causes future entries to also choose full texts,
spiraling into huge revlogs.
The fix is to remove the condition around total ondisk distance. The new
heuristic only takes into account the delta chain size and distance, so it
should make the same choice each time, regardless of the amount of branching
happening or the full text choices of other branches.
Test Plan:
Did an hg pull in a repo that was known to be slow before. It was
veyr fast.
Reviewers: mpm, pyd, #sourcecontrol
Differential Revision: https://phabricator.fb.com/D2693043
Summary:
"git branch -m new" renames the *current* branch. Add a shell command to read
the current bookmark when omitted from the git branch -m command line.
Test Plan:
Run tests with:
cd tests && python run-tests.py test-githelp.t
Reviewers: mitrandir, rmcelroy, durham
Reviewed By: rmcelroy, durham
Subscribers: mitrandir
Differential Revision: https://phabricator.fb.com/D2679470
Tasks: 8905356
Signature: t1:2679470:1448062781:d877b60bc2d675efac8d4814f9f89713e1c2630d
Summary: calculate and add move data when its not in the local or move repo. In theory this should only be called for a few old draft commits, prior to the filldb.py extensions
Test Plan: the old tests still pass and i tested manually a rebase when the local database was erased
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2678603
Tasks: 8659945
Summary: adding ui config to allow deploying first the 'filling the client database' then 'pushing to and pushing from the server database' and finally the 'copytracing' part
Test Plan: adding those ui configs, the former tests still pass
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2672217
Tasks: 8660367
Summary: moving remote to a ui config. servers are True, clients are False.
Test Plan: the former tests still pass
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2671855
Tasks: 8660367
Summary: Added all the sql commands for the MySQL remote database, and gathered all the commands in a single function
Test Plan: Created a serverrepo, two client ones, did push and pulls between them
Reviewers: #sourcecontrol, rmcelroy
Reviewed By: rmcelroy
Differential Revision: https://phabricator.fb.com/D2661606
Tasks: 8660367
Signature: t1:2661606:1447875185:0e9d3876b2f509028585349a9d05b447876b3da0
Summary:
When a sparse profile is not found (perhaps because the user used an incomplete
or misspelled path), warn the user that a profile is not found.
There was already a debug message for this, elevate it to a warning.
Test Plan:
Run the tests:
cd tests
python run-tests.py test-sparse*.t
Manual test:
hg init test
cd test
cat > .hg/hgrc <<EOF
[extensions]
sparse=$(dirname $TESTDIR)/sparse.py
EOF
touch testfile
hg add testfile
hg ci -m 'initial commit'
hg sparse --enable-profile foo/bar
hg sparse --disable-profile foo/bar
and the following warning is printed twice:
warning: sparse profile 'foo/bar' not found in rev <hash> - ignoring it
Disabling the warning with:
cat >> .hg/hgrc <<EOF
[sparse]
missingwarning=false
EOF
hg sparse --enable-profile foo/bar
hg sparse --disable-profile foo/bar
Reviewers: rmcelroy, durham
Reviewed By: durham
Differential Revision: https://phabricator.fb.com/D2668406
Tasks: 8994281
Signature: t1:2668406:1447948981:66d16b94ea7ea682b9e0c3faaccc1a364283364d
Summary: centralizing the sqlite commands in a function - adding a 'repo' column to the sqlite database so that it is similar to the future XDB
Test Plan: the former tests still pass
Reviewers: #sourcecontrol, rmcelroy
Differential Revision: https://phabricator.fb.com/D2665931
Tasks: 8660367