Summary:
We've spent a lot of time hacking around the outputs of hg in jf (a new
tool we use at FB to interact with our code-review system). We've figured out that it
could be all avoided and made cleaner with simple hg extension that dumps all
the data we need in a format that we can easily consume.
Test Plan: see attached test
Reviewers: #fbhgext, ryanmce
Reviewed By: #fbhgext, ryanmce
Subscribers: quark
Differential Revision: https://phab.mercurial-scm.org/D205
It's breaking Linux tests. I spent some time reading the shell script but
cannot figure out what's wrong quickly, so backing it out to unblock
contbuild now.
Summary: - update the scm-prompt.sh script to display when there have been local changes that haven't backed up in four hours
Test Plan: arc unit tests/test-scm-prompt-hg.t
Reviewers: rmcelroy, stash
Reviewed By: rmcelroy
Subscribers: medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5498437
Tasks: 18349390
Signature: t1:5498437:1501083894:8a8872df2c6492006c8a76c365d53a3b9a41933a
Summary:
- change the infinitepush extension to record additional state when the a backup occurs.
- useful for other tools (scm-prompt, nuclide) to indicate when a backup hasn't occurred recently
Test Plan:
- cd facebook-hg-rpms/
- source hg-dev
- cd fb-hgext
- arc unit
Reviewers: rmcelroy, stash
Reviewed By: stash
Subscribers: rmcelroy, medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5321221
Tasks: 18349390
Signature: t1:5321221:1501271966:6698785e0714e3ecf7e1e2684d1e62e52ac0f1a0
Summary: My hostname contains an underscore and that causes these tests to fail.
Test Plan: arc unit tests/test-infinitepush-logging.t
Reviewers: stash
Reviewed By: stash
Subscribers: medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5498213
Signature: t1:5498213:1501229709:6cd63cd0e7e644388d21f516893dcd8fb48e75de
Summary:
Keep `showupdated` commit messages limited to a 50 character width,
with a "..." ellipsis to signify that the message was trimmed.
Test Plan: Added a test.
Reviewers: #fbhgext, durham
Reviewed By: #fbhgext, durham
Differential Revision: https://phab.mercurial-scm.org/D217
Summary:
Symlinks must not have newlines at their end. However reading the
content from Perforce, it might contain a newline, so we now strip it.
Test Plan:
python ../../hg-crew/tests/run-tests.py --keep-tmpdir test-p4fastimport-import-modes.t
Reviewers: #idi, #mercurial, rmcelroy
Reviewed By: rmcelroy
Subscribers: rmcelroy, medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5535514
Signature: t1:5535514:1501601075:20ce811a92d1d5b5a973e05db1d2110599c5ef52
Summary:
Writing multiple entries to a revlog at the same time can trigger a bug
in revlog caching when a revlog separation of inlined data happend. New
transaction postprocessing callbacks will cause a changelog read which
triggers this bug, therefore we force revlogs to be separated from the
beginning, as a workaround for this bug until it's fixed upstream.
Test Plan:
Run an import of 600 revisions on a test server. Saw failure.
Run import with patch appleid of 600 revisions on test server. Failured
disappeared.
Reviewers: #mercurial, rmcelroy
Reviewed By: rmcelroy
Subscribers: mitrandir, rmcelroy, medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5535509
Signature: t1:5535509:1501613606:97a0a2dca19ae6e915d4777ec6b14d1e9db46242
Summary:
We overwrite existing transactions instead of appending them. So let's just
append them instead. This problem becomes apparent when we started separating
changelog data files from changelog index files which breaks the tests.
Test Plan: python ../../hg-crew/tests/run-tests.py test-p4fastimport-transaction.t
Reviewers: #idi, #mercurial, rmcelroy
Reviewed By: rmcelroy
Subscribers: mitrandir, rmcelroy, medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5535507
Signature: t1:5535507:1501613588:efeead423ca6d6fb50a4d4f83af68e8f87688912
Summary:
The debug output of p4fastimport depends on the users environment (e.g. cvs
tools installed or not). Glob the corresponding output
Test Plan:
Tests didn't run before on my machine,
now they run
Reviewers: #mercurial, rmcelroy
Reviewed By: rmcelroy
Subscribers: rmcelroy, medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5535504
Signature: t1:5535504:1501613540:f6f42e97eb0e7515146eea888bfd758759d69f71
Certain extensions (specifically infinite push) call full fledge mercurial
commands. Since all proper mercurial commands might change the repo state,
these are tracked and changes are recorded, which at best causes confusing repo
states for the user and at worst prevents the user from undo-ing due to
precieved gaps in the log. By using an env flag we can avoid this.
This change was tested in a repo with infinite push enabled with unit tests.
Differential Revision: https://phab.mercurial-scm.org/D198
Lock error handling reduces likelyhood undo hangs or breaks other commands.
Fixes known bug of undo in read-only repo. Undo is not neccesary for mercurial
to work and handles missing data (decently) well. Failing silently (potentially
logging to scuba for timeouts) is acceptable, since if the issue is real we will
fail not silently when trying to undo.
Differential Revision: https://phab.mercurial-scm.org/D200
Summary:
Adds a new revsetpredicate: `age()`, which matches changesets that are
older or younger than a certain age.
Test Plan: Add new unit test for the predicate.
Reviewers: #fbhgext, stash
Differential Revision: https://phab.mercurial-scm.org/D196
Summary:
Allow summarisation of commits that have not been backed up
by infinitepush.
1. Add a template keyword (backupstatus) which evaluates to
one of "Public", "Backed up", "Backup pending", or
"Not backed up" depending on the backup state of the
commit. Commits are pending for 10 minutes, after which
they are declared not backed up.
2. Add a summary to the end of smartlog that shows the
number of commits that are not backed up.
Configuration options allow the addition of an education
message to inform users what to do about their failing
backups, and the message can also be suppressed.
Test Plan:
New unit test for both the keyword and the summary.
Reviewers: #fbhgext, stash
Subscribers: mitrandir, quark, akushner
Differential Revision: https://phab.mercurial-scm.org/D184
Summary:
Previously fastmanifest.usecache=False would only prevent the reading of the
fastmanifest cache, but the cache was still created. This created excess IO on
services that frequently recreated the repository.
Test Plan: Added a test
Reviewers: #fbhgext
Differential Revision: https://phab.mercurial-scm.org/D155
Summary:
There is an existing template "diffstat" which gives a minimal and not
very useful output containing the overall number of files that changed, total
number of lines inserted for all associated files, and total number of lines
deleted for all associated files.
On the other hand, the output from the command line option "stat" is much more
descriptive. Therefore, users end up using commands of the form
hg log -r . -T '{author}{date}' --stat
When they would have preferred something like
hg log -r . -T '{author}{date}{stat}'
This change adds the template "stat" which will allow for the desired behavior.
Test Plan:
# Added a new test test-template-stat.t
# Ran arc unit
Reviewers: #sourcecontrol, quark
Reviewed By: quark
Subscribers: akushner, medson, mjpieters, quark, rmerizalde
Differential Revision: https://phabricator.intern.facebook.com/D5521665
Tasks: 12422741
Signature: t1:5521665:1501287682:2afaea56b3dc863c52e6300c6bc482ae132a6a61
Summary:
When a user commits changes to a git-fusion repo, it pushes commit to perforce as user git-fusion-user, and then update the commit's author to be the actual author. We want p4fastimporter to skip the git-fusion-user commit and import the commit by the actual author. This diff sets the basic workflow, where we specify the constraint to be commits by git-fusion-user that is less than 30 seconds old.
// TODO: make the constraint configurable.
Test Plan:
$ cd ~/facebook-hg-rpms/fb-hgext/tests/
// test race condition
$ python ../../hg-crew/tests/run-tests.py test-p4fastimport-gitfusion-race-condition.t
// test all
$ python ../../hg-crew/tests/run-tests.py test-p4*
Reviewers: #idi, davidsp
Reviewed By: davidsp
Subscribers: medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5509536
Tasks: 20141882
Signature: t1:5509536:1501521842:17dd767615b8218980eda68d4113433d30805d92
Summary:
Let's add logging for the size of rebases (the number of commits being rebased
and the distance over which they are rebased).
Test Plan: Ran a rebase and saw the data show up in ptail
Reviewers: #fbhgext, quark
Reviewed By: #fbhgext, quark
Subscribers: stash, quark, ryanmce
Differential Revision: https://phab.mercurial-scm.org/D169
Summary:
Let's log the number of commits we're traversing and the number of files
changed by an update.
Test Plan:
Ran it with --config
sampling.key.update_size=perfpipe_dev_command_timers and watched the entry show
up via ptail
Reviewers: #fbhgext, ryanmce
Reviewed By: #fbhgext, ryanmce
Subscribers: ryanmce
Differential Revision: https://phab.mercurial-scm.org/D166
Summary:
That switches us to use the higher level abstractions and allows us to
beneefit from things like showupdated (see: D173)
Test Plan: ran metaedit tests
Reviewers: #fbhgext, quark
Reviewed By: #fbhgext, quark
Subscribers: quark
Differential Revision: https://phab.mercurial-scm.org/D191
Summary:
This option was intended as temporary and it was enabled for long enough time.
Now let's delete it.
Test Plan: Run unit-tests
Reviewers: #fbhgext, quark
Reviewed By: #fbhgext, quark
Differential Revision: https://phab.mercurial-scm.org/D195
Summary:
We had a few troubles where fastlog failed with a weird error and people got
incorrect log output. While I still don't know why fastlog failed in the first
place, I've found the reason why log output was truncated. And this diff fixes
it. See the comments in the code for details.
Test Plan: Run unit-test
Reviewers: #fbhgext, simonfar
Reviewed By: #fbhgext, simonfar
Subscribers: simonfar
Differential Revision: https://phab.mercurial-scm.org/D193
Summary: Add `--delete` to the list of sparse options that understand cwd-relative paths.
Test Plan: rt
Reviewers: mjpieters, #fbhgext
Differential Revision: https://phab.mercurial-scm.org/D197
Summary: Removed 'missing' list variable as it is not needed
Test Plan: No. All tests pass
Reviewers: simonfar, durham, stash
Reviewed By: stash
Subscribers: stash, medson, mjpieters, #mercurial
Differential Revision: https://phabricator.intern.facebook.com/D5461432
Signature: t1:5461432:1500559459:9bca4b429807082dd9a2a2a0283ab7b23df82b70
Summary: Let's be friendlier to our friends on Windows.
Test Plan: rt
Reviewers: mjpieters, #fbhgext
Differential Revision: https://phab.mercurial-scm.org/D194
Previously, inhibit may use a wrong date when writing markers. This patch
fixes that. Also add a test to check the date and make sure `revive` takes
effects inside a transaction.
Differential Revision: https://phab.mercurial-scm.org/D182
Summary:
This command helps the user to bring back the commits to life with an explicit
command - wihtout the need to change working copy parent or create bookmarks.
Test Plan: see test
Reviewers: #fbhgext, durham, kulshrax, quark
Reviewed By: #fbhgext, quark
Subscribers: ryanmce
Differential Revision: https://phab.mercurial-scm.org/D179
Summary:
We have two commands for hiding commits:
* strip - which has a lot of legacy options and legacy name
* prune - which allows for creating arbitrary obsolescence markers
Both of them have complicated UI and are suboptimal experiences for unadvanced
user. The `hg hide` command is very simple, does one job and does it well.
Test Plan: see test
Reviewers: #fbhgext, durham, quark, kulshrax
Reviewed By: #fbhgext, quark
Subscribers: akushner
Differential Revision: https://phab.mercurial-scm.org/D178
Summary:
git-sl is a script to emulate some of hg smartlog, but for git. It's generally
useful, and demonstrates some of our thinking around source control, so let's
release it to the world.
Test Plan:
Just for documentation
Ran tests - only test-check-commit-hg.t fails, but that does not run on public
commits, so this is safe to land (unlike the previous attempt).
Reviewers: durham, ryanmce, #fbhgext, quark
Reviewed By: #fbhgext, quark
Subscribers: quark, #fbhgext
Differential Revision: https://phab.mercurial-scm.org/D180
Summary:
When we are falling back to cvs tools to read content of a file, we still do
keywrod expansion through cvs `co` command. This patch disables the keyword
expansion.
Test Plan: run tests on test-p4*
Reviewers: #mercurial, quark
Reviewed By: quark
Subscribers: medson, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D5485123
Signature: t1:5485123:1500948788:fe4bc2fb8c50858ba7d8689bbf41d1de41b81000
Summary:
We didn't check for sanity when the user asked for hg githelp -- git -
oops. Fix the args test to catch you if you ask for help for git, as opposed to
(say) git commit.
Test Plan: Ran the new test cases.
Reviewers: #fbhgext, ikostia
Reviewed By: ikostia
Differential Revision: https://phab.mercurial-scm.org/D183
Summary:
Adding a knob to control how we perceive supplied paths is a good intermediated
step towards getting every user to use cwd-relative paths.
Test Plan: - rt
Reviewers: mjpieters, #fbhgext
Differential Revision: https://phab.mercurial-scm.org/D175
Summary:
Users and particularly automation can benefit from having the new
revision hashes as part of the output of rebase and other operations that
update nodes. Right now, hacks such as getting the tip revision are used to get
that information.
Test Plan: unit tests
Reviewers: #fbhgext, ryanmce
Reviewed By: #fbhgext, ryanmce
Subscribers: ryanmce, durham, stash, quark
Differential Revision: https://phab.mercurial-scm.org/D173
Summary:
--retry can be used instead of --continue when histedit failed on "exec" (due to it returning a non-zero exit code) and the user wants to repeate that command rather than continuing past it
--show-plan will print the remaining plan of histedit during an interrupted histedit
Test Plan: cd fb-hgext/tests/ && rt
Reviewers: #fbhgext, stash
Reviewed By: #fbhgext, stash
Subscribers: stash, quark
Differential Revision: https://phab.mercurial-scm.org/D176
Summary:
Core mercurial has a much better "nocheck" option now that we should just start
using. It's better and it's built-in!
Test Plan: Updated tests
Reviewers: #fbhgext, quark
Reviewed By: #fbhgext, quark
Subscribers: quark
Differential Revision: https://phab.mercurial-scm.org/D164
Summary: Current behavior does not even do what it says, let alone the right thing.
Test Plan: - rt
Reviewers: #fbhgext
Differential Revision: https://phab.mercurial-scm.org/D174
This allows us to log what nodes are pinned by what commands. So we can
manually investigate what was happening when we get user complaints.
Differential Revision: https://phab.mercurial-scm.org/D158
Summary:
There was a report from an infinitepush user who complained about
`hg update remote/scratch/book` failing to pull the bookmark, while
`hg update scratch/book` pulling fine. It confuses users because they see
`remote/scratch/book` in smartlog.
On the other hand let's not allow `hg pull -B remote/scratch/book` to stay
consistent with remotenames.
Test Plan: Slowly run tests
Reviewers: #fbhgext, ryanmce
Reviewed By: #fbhgext, ryanmce
Subscribers: ryanmce
Differential Revision: https://phab.mercurial-scm.org/D172
Summary:
If remotefilelog server cache files are truncated, when the server
returns these files to the client, the client will crash trying to
decompress them. Detect truncated files and treat them as cache
misses.
Test Plan: Add unit test for truncated server cache files.
Reviewers: #fbhgext, simonfar
Reviewed By: #fbhgext, simonfar
Differential Revision: https://phab.mercurial-scm.org/D170
Some power user workflow requires `uncommit` to leave an empty commit so
they can run `hg amend` afterwards. I don't find easy alternatives so let's
allow that if `ui.allowemptyconfig` is set.
Note: `ui.allowemptyconfig` is an internal config that is not documented for
end-users. Core Mercurial seems to be trying to prevent the empty commit
case from normal users (like, comment disallows that, rebase will skip a
commit if after rebasing it becomes empty). So it seems better to still use
that undocumented config instead of a more discoverable flag.
Differential Revision: https://phab.mercurial-scm.org/D156
Summary:
We've seen a couple of issues when there are lots of public commits between a
head and master bookmark. Smartlog tries to draw all of the public commits
and drawing it can be too slow. See example below
```
o - some commit that smartlog wants to draw
/
o
.
. -- many commits
.
o - master bookmarks
```
This issue happens often while using infinitepush extension.
Let's fix it by drawing just one public commit between a head and master.
We could of course avoid drawing this public commit at all, but in that case
output would be smth like
```
o - some commit that smartlog wants to draw
/
o
| - many commits in betwee, but user doesn't see it because there are no dots
o - master bookmarks
```
Test Plan: Slowly run tests
Reviewers: #fbhgext, ryanmce
Reviewed By: #fbhgext, ryanmce
Subscribers: ryanmce
Differential Revision: https://phab.mercurial-scm.org/D168