Fri, 22 Dec 2017 18:38:29 -0700 githelp: recommend `hg import` for `git am`
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 22 Dec 2017 18:38:29 -0700] rev 35716
githelp: recommend `hg import` for `git am` This referenced a third party extension. It doesn't feel appropriate to do that from a core extension. Reference `hg import` instead. Differential Revision: https://phab.mercurial-scm.org/D1724
Mon, 18 Dec 2017 20:51:20 -0800 githelp: improve help for `git add`
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 18 Dec 2017 20:51:20 -0800] rev 35715
githelp: improve help for `git add` The old code was referencing record and crecord, which are deprecated. `hg commit --interactive` is the preferred mechanism to use. In addition, there was duplicate code in this function. It has been removed. Tests have been added to cover this function. Differential Revision: https://phab.mercurial-scm.org/D1723
Mon, 18 Dec 2017 20:44:59 -0800 githelp: vendor Facebook authored extension
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 18 Dec 2017 20:44:59 -0800] rev 35714
githelp: vendor Facebook authored extension This commit vendors the Facebook-authored "githelp" extension. This extension provides a "githelp" command that can be used to try to convert a `git` command to its Mercurial equivalent. This functionality is useful for Git users learning Mercurial. The extension was copied from the repository at revision 32ceeccb832c433b36e9af8196814b8e5a526775. The following modifications were made: * The "testedwith" value has been changed to match core's conventions. * Support for a custom footer has been removed, as it is Facebook specific. The feature is useful. But the implementation wasn't appropriate for core. * A test referencing "tweakdefaults" has been removed. * Imports changed to match Mercurial's style convention. * Double newlines in test removed. * Pager activation changed to ui.pager(). * Initial line of githelp.py changed to add description of file. The removal of the custom footer code was the only significant source change. The rest were mostly cosmetic. There are still some Facebook-isms in the extension. I'll address these as follow-ups. .. feature:: githelp extension The "githelp" extension provides the ``hg githelp`` command. This command attempts to convert a ``git`` command to its Mercurial equivalent. The extension can be useful to Git users new to Mercurial. Differential Revision: https://phab.mercurial-scm.org/D1722
Thu, 18 Jan 2018 19:40:17 +0530 merge: use public interface ms.localctx instead of ms._local
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 18 Jan 2018 19:40:17 +0530] rev 35713
merge: use public interface ms.localctx instead of ms._local
Tue, 16 Jan 2018 14:28:57 +0100 bookmarks: display the obsfate of hidden revision we create a bookmark on
Boris Feld <boris.feld@octobus.net> [Tue, 16 Jan 2018 14:28:57 +0100] rev 35712
bookmarks: display the obsfate of hidden revision we create a bookmark on Display the same message we added recently to the filtered error message create a bookmark on an hidden revision. Differential Revision: https://phab.mercurial-scm.org/D1870
Tue, 16 Jan 2018 14:08:54 +0100 update: display the obsfate of hidden revision we update to
Boris Feld <boris.feld@octobus.net> [Tue, 16 Jan 2018 14:08:54 +0100] rev 35711
update: display the obsfate of hidden revision we update to Display the same message we added recently to the filtered error message when updating to a hidden obsolete changeset. Differential Revision: https://phab.mercurial-scm.org/D1869
Sun, 14 Jan 2018 00:02:40 -0800 evolution: make reporting of new unstable changesets optional
Martin von Zweigbergk <martinvonz@google.com> [Sun, 14 Jan 2018 00:02:40 -0800] rev 35710
evolution: make reporting of new unstable changesets optional This makes it possible to turn off the reporting of unstable changesets (e.g. "1 new orphan changesets"), just in case it's too slow for some users. Anyone who's been using the evolve extension has already been accepting the cost of the reporting, so this is just for the few users who have turned on obsmarkers but not been using the evolve extension (as I believe Facebook has). Differential Revision: https://phab.mercurial-scm.org/D1868
Sun, 14 Jan 2018 23:59:17 -0800 evolution: report new unstable changesets
Martin von Zweigbergk <martinvonz@google.com> [Sun, 14 Jan 2018 23:59:17 -0800] rev 35709
evolution: report new unstable changesets This adds a transaction summary callback that reports the number of new orphan, content-divergent and phase-divergent changesets. The code for reporting it is based on the code from the evolve extension, but simplified a bit. It simply counts the numbers for each kind of instability before and after the transaction. That's obviously not very efficient, but it's easy to reason about, so I'm doing this as a first step that can make us quite confident about the test case changes. We can optimize it later and make sure that the tests are not affected. The code has been used in the evolve extension for a long time and has apparently been sufficiently fast, so it doesn't seem like a pressing issue. Unlike the evolve extension's version of this report, this version applies to all commands (or all transactions run as part of any command, to be exact). Differential Revision: https://phab.mercurial-scm.org/D1867
Wed, 10 Jan 2018 14:00:23 -0800 transaction: register summary callbacks only at start of transaction (BC)
Martin von Zweigbergk <martinvonz@google.com> [Wed, 10 Jan 2018 14:00:23 -0800] rev 35708
transaction: register summary callbacks only at start of transaction (BC) We currently register summary callbacks every time localrepo.transaction() is called, so both when the transaction is started and when a nested transaction is created. That seems a little weirdly asymmetric, because the summary callbacks are thus not necessarily registred at the beginning of the outermost transaction, but they are only called when the outermost transaction closes (not when a nested transaction closes). I want to add another summary callback that records the repo state at the beginning of the transaction and compares to that when the transaction closes. However, because of the registration that happens when a nested transaction is created, that would need to go through extra trouble to not overwrite the callback and report the difference from the start time of the innermost transaction to the close of the outermost transaction. Also, the callbacks are registered with a name based on the order they are defined in the registersummarycallback(). For example, if both the "new changesets %s" and the "obsoleted %i changesets" hooks are registered, the first would be called 00-txnreport and the second would be called 01-txnreport. That gets really weird if registersummarycallback() gets called multiple times, because the last one wins, and a depending on which of the two callbacks get registered, we might hypothetically even overwrite on type of callback with another. For example, if when the outer transaction was started, we registered the "new changesets %s" callback first, and when the inner transaction was started, we registered only the "obsoleted %i changesets" callback, then only the latter message would get printed. What makes it hypothetical is that what gets registered depends on the transaction name, and the set of transaction names that we match on for the former latter message is a subset of the set of names we match on for the former. Still, that seems like a bug waiting to happen. That second issue could be solved independently, but the first issue seems enough for me to consider it a bug (affecting developers, not users), so this patch simply drops that extra registration. Note that this affects "hg transplant" in a user-visible way. When "hg transplant" is asked to transplant from a remote repo so it involves a pull, then the outermost transaction name is "transplant" and an inner transaction is created for "pull". That inner transaction is what led us to sometimes report "new changesets %s" from "hg transplant". After this patch, that no longer happens. That seems fine to me. We can make it instead print the message for all "hg transplant" invocations if we want (not just those involving a remote), but I'll leave that for someone else to do if they think it's important. Differential Revision: https://phab.mercurial-scm.org/D1866
Sun, 14 Jan 2018 14:39:17 -0800 repair: filter out unknown revisions from phasecache within transaction
Martin von Zweigbergk <martinvonz@google.com> [Sun, 14 Jan 2018 14:39:17 -0800] rev 35707
repair: filter out unknown revisions from phasecache within transaction I'm about to add another summary report callback that needs to access phase information. These callbacks run at the end of the transaction and some of them failed because they tried to get the phase for stripped commits. The solution is to filter out unknown revisions before the transaction is closed. Differential Revision: https://phab.mercurial-scm.org/D1865
Sun, 14 Jan 2018 23:37:06 -0800 repair: drop unnecessary phase cache invalidation
Martin von Zweigbergk <martinvonz@google.com> [Sun, 14 Jan 2018 23:37:06 -0800] rev 35706
repair: drop unnecessary phase cache invalidation After stripping the revlogs, we have been invalidating the phase cache since bf7b8157c483. Later, in 8e3021fd1a44, I added a call to phasecache.filterunknown(). I apparently didn't realize it then, but I now think that that call made the existing phasecache.invalidate() call unnecessary, so this patch drops it. Both the test added in bf7b8157c483 and the entire evolve extension test suite indeed still pass. Differential Revision: https://phab.mercurial-scm.org/D1864
Mon, 15 Jan 2018 15:20:02 -0800 wireproto: drop support for reader interface from streamres (API)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 15 Jan 2018 15:20:02 -0800] rev 35705
wireproto: drop support for reader interface from streamres (API) 2add671bf55b and later commits overhauled support for compression and output handling in the wire protocol. Fast forward 14 months and all wire protocol commands except the legacy "changegroup" and "changegroupsubset" commands feed a generator to streamres. I no longer think it is worth maintaining support for the old "reader" API (which allows you to specify an object having a read() method to obtain data). This commit refactors the legacy wire protocol commands to feed a generator to the streamres. We also drop support for the "reader" argument and the code that was using it. As part of the change, chunks over the SSH protocol have increased in size for these commands. But these commands are really ancient, so I doubt anyone will notice. .. api:: wireproto.streamres.__init__ no longer accepts a "reader" argument. Use the "gen" argument instead. Differential Revision: https://phab.mercurial-scm.org/D1861
Mon, 08 Jan 2018 19:41:47 +0530 merge: add `--abort` flag which can abort the merge
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 08 Jan 2018 19:41:47 +0530] rev 35704
merge: add `--abort` flag which can abort the merge Currently we don't have a good functionality to abort the merge and tell user to do `hg update -C .` which can leads to different results if user missed the '.' and moreover does not align with other abort functionalities like rebase, shelve etc. This patch adds `hg merge --abort` which will abort the ongoing merge and take us back to the chagneset where we started from. Works in both cases when merge resulted in conflicts and when there were no conflicts. .. feature:: A `--abort` flag to merge command to abort the ongoing merge. Differential Revision: https://phab.mercurial-scm.org/D1829
Thu, 04 Jan 2018 21:37:03 -0800 filemerge: only write in-memory backup during premerge
Phil Cohen <phillco@fb.com> [Thu, 04 Jan 2018 21:37:03 -0800] rev 35703
filemerge: only write in-memory backup during premerge This wasn't broken, but should mirror the non-in memory case to save an extra write. Differential Revision: https://phab.mercurial-scm.org/D1807
Thu, 04 Jan 2018 21:36:58 -0800 filemerge: fix backing up an in-memory file to a custom location
Phil Cohen <phillco@fb.com> [Thu, 04 Jan 2018 21:36:58 -0800] rev 35702
filemerge: fix backing up an in-memory file to a custom location If the user specifies a ui.origbackuppath, we used to always copy the file there, but if the source file is in memory we must write it instead of copying. Differential Revision: https://phab.mercurial-scm.org/D1806
(0) -30000 -10000 -3000 -1000 -300 -100 -15 +15 +100 +300 +1000 +3000 +10000 tip