Mon, 25 Aug 2014 18:09:54 +0200 obsmarker: write a message with the number of markers added through bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 18:09:54 +0200] rev 22337
obsmarker: write a message with the number of markers added through bundle2
Mon, 25 Aug 2014 18:08:22 +0200 bundle2: add an obsmarkers part handler
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 18:08:22 +0200] rev 22336
bundle2: add an obsmarkers part handler This part contains a binary stream of obsolescence markers. Received markers are added to the repository.
Mon, 25 Aug 2014 16:24:40 +0200 obsolete: make encodemarkers a public function
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:24:40 +0200] rev 22335
obsolete: make encodemarkers a public function We'll need access to it for bundle2.
Mon, 25 Aug 2014 16:21:33 +0200 obsolete: move _encodemarkers next to _readmarkers
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:21:33 +0200] rev 22334
obsolete: move _encodemarkers next to _readmarkers
Mon, 25 Aug 2014 16:18:44 +0200 obsstore: store and preserve ondisk version
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:18:44 +0200] rev 22333
obsstore: store and preserve ondisk version
Mon, 25 Aug 2014 16:51:51 +0200 obsolete: have _readmarkers return the format version
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:51:51 +0200] rev 22332
obsolete: have _readmarkers return the format version readmarkers is not returning the version of the format it read from. This will let callers know about the format and allow them to preserve it.
Mon, 25 Aug 2014 16:16:01 +0200 obsolete: support for any known obsstore format when reading or writing
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:16:01 +0200] rev 22331
obsolete: support for any known obsstore format when reading or writing We can now read and write any known format. The list of known formats currently has one element (0). The obsstore itself is not aware of multiple formats yet and always uses format 0.
Mon, 25 Aug 2014 16:09:18 +0200 obsolete: move _fm0encodeonemarker next to _fm0readmarkers
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:09:18 +0200] rev 22330
obsolete: move _fm0encodeonemarker next to _fm0readmarkers
Mon, 25 Aug 2014 16:43:23 +0200 obsolete: rename _encodeonemarker to _fm0encodeonemarkers
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 16:43:23 +0200] rev 22329
obsolete: rename _encodeonemarker to _fm0encodeonemarkers This function encodes markers in version 0 of the format.
Mon, 25 Aug 2014 14:58:11 +0200 obsolete: extract the part of _readmarkers specific to format version 0
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 14:58:11 +0200] rev 22328
obsolete: extract the part of _readmarkers specific to format version 0 If we are to introduce new formats we need to be able call different functions for different formats. Creating a function for format version 0 is the first step.
Mon, 25 Aug 2014 14:56:15 +0200 obsolete: rename all _fm to _fm0
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 14:56:15 +0200] rev 22327
obsolete: rename all _fm to _fm0 This change is because these formats are used for version 0 of the obsstore format. This is going to be useful in the future when we introduce new versions of the format.
Mon, 25 Aug 2014 14:52:51 +0200 obsolete: rename _fnodesize to _fmfnodesize
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 14:52:51 +0200] rev 22326
obsolete: rename _fnodesize to _fmfnodesize All variables involved in the obsstore format are prefixed with `_fm`. `_fnodesize` was the exception. It is now back in line. This is meaningful as we'll need to distinguish between multiple versions of the obsstore format.
Thu, 21 Aug 2014 17:42:50 -0700 obsstore: have the `mergemarkers` method return the number of new markers
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 21 Aug 2014 17:42:50 -0700] rev 22325
obsstore: have the `mergemarkers` method return the number of new markers The mergemarkers function now returns the number of unknown markers in the stream that have been added to the obsstore. This is similar to what `obsstore.add` already does. The method gains a docstring in the process.
Mon, 01 Sep 2014 23:43:33 +0200 merge with i18n stable 3.1.1
Matt Mackall <mpm@selenic.com> [Mon, 01 Sep 2014 23:43:33 +0200] rev 22324
merge with i18n
Thu, 21 Aug 2014 17:36:05 -0700 test-bundle2: add obsolescence information to be exchanged
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 21 Aug 2014 17:36:05 -0700] rev 22323
test-bundle2: add obsolescence information to be exchanged To introduce a bundle2 way to exchange obsolescence markers, we need to have some information available to exchange. Introduce markers relevant to changesets involved in the exchange. The new markers reference the changesets as successor nodes of clowny (nonexistent) hashes so that other than being exchanged they have no effect. We introduce them in two waves as push is expected to be smart about the number of markers it exchanges sooner than pull.
Sat, 30 Aug 2014 20:06:24 +0200 help: only call doc() when it is callable stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Aug 2014 20:06:24 +0200] rev 22322
help: only call doc() when it is callable `hg help -k` on my machine was aborting because the hg-prompt extension was inserting a string and not a function into help.helptable and help was blindly calling it. This patch changes keyword searching to be more robust against unexpected types.
Mon, 01 Sep 2014 10:57:27 -0300 i18n-pt_BR: synchronized with 6a8b8efb0641 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 01 Sep 2014 10:57:27 -0300] rev 22321
i18n-pt_BR: synchronized with 6a8b8efb0641
Mon, 01 Sep 2014 10:54:49 -0300 merge with i18n stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 01 Sep 2014 10:54:49 -0300] rev 22320
merge with i18n
Sun, 31 Aug 2014 20:49:13 +0900 i18n-ja: synchronized with 0c838e7459a5 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 31 Aug 2014 20:49:13 +0900] rev 22319
i18n-ja: synchronized with 0c838e7459a5
Sat, 30 Aug 2014 09:40:31 -0300 i18n-pt_BR: synchronized with 0c838e7459a5 stable
Wagner Bruna <wbruna@yahoo.com> [Sat, 30 Aug 2014 09:40:31 -0300] rev 22318
i18n-pt_BR: synchronized with 0c838e7459a5
Sun, 31 Aug 2014 19:43:03 +0900 repoview: fix typo in repoview.changelog stable
Mike Hommey <mh@glandium.org> [Sun, 31 Aug 2014 19:43:03 +0900] rev 22317
repoview: fix typo in repoview.changelog Incidentally, this avoids the changelog cache being invalidated each time it's accessed on a repoview. On a filtering experiment on a repository the size of mozilla-central, this makes a significant difference: Before, running hg log -l 10 --time with about 8k changesets filtered out: time: real 1.490 secs (user 1.450+0.000 sys 0.040+0.000) After: time: real 0.540 secs (user 0.530+0.000 sys 0.010+0.000)
Tue, 19 Aug 2014 16:57:02 -0700 config: exit non zero on non-existent config option (issue4247) stable
Aaron Kushner <akushner@fb.com> [Tue, 19 Aug 2014 16:57:02 -0700] rev 22316
config: exit non zero on non-existent config option (issue4247) When running 'hg config no_such_option', hg exited with a zero exit code. This change now exits with a 1 if the config option does not exist.
Sat, 30 Aug 2014 18:44:59 +0200 merge with crew
Matt Mackall <mpm@selenic.com> [Sat, 30 Aug 2014 18:44:59 +0200] rev 22315
merge with crew
Sat, 30 Aug 2014 15:13:02 +0200 bookmarks: refer to "the" active bookmark to clarify that there's only one stable
Kevin Bullock <kbullock@ringworld.org> [Sat, 30 Aug 2014 15:13:02 +0200] rev 22314
bookmarks: refer to "the" active bookmark to clarify that there's only one This is a follow-on to 0c6cdbb697d9 that just makes a slight clarification.
Sat, 30 Aug 2014 05:29:38 -0700 memctx: allow extensions to determine what filectxfn should do
Siddharth Agarwal <sid0@fb.com> [Sat, 30 Aug 2014 05:29:38 -0700] rev 22313
memctx: allow extensions to determine what filectxfn should do Rev 650b5b6e75ed switched the contract for filectxfn from "raise IOError if file is missing" to "return None if file is missing". Out of tree extensions need to be updated for that, but for extensions interested in compatibility with both Mercurial <= 3.1 and default, it is next to impossible to introspect core Mercurial to figure out what to do. This patch adds a field to memctx for extensions to use.
Sat, 30 Aug 2014 15:17:37 +0200 revsetbenchmark: add revset with lazyset subtraction
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Aug 2014 15:17:37 +0200] rev 22312
revsetbenchmark: add revset with lazyset subtraction The added revset is used by obsolescence and currently results in recursion in __contains__ between 2 lazysets. We should have coverage of this revset.
Sat, 30 Aug 2014 11:57:46 +0200 debugrevlog: add chainlen column to --dump output
Sune Foldager <cryo@cyanite.org> [Sat, 30 Aug 2014 11:57:46 +0200] rev 22311
debugrevlog: add chainlen column to --dump output
Sat, 30 Aug 2014 11:56:33 +0200 debugdag: stop wrongly sorting parents
Henrik Stuart <hg@hstuart.dk> [Sat, 30 Aug 2014 11:56:33 +0200] rev 22310
debugdag: stop wrongly sorting parents The dag being dumped is not in a format that allows us to reconstruct the original dag as the parent revisions are normalised.
Fri, 29 Aug 2014 18:00:44 +0200 obsolete: avoid slow, generic date parsing
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 29 Aug 2014 18:00:44 +0200] rev 22309
obsolete: avoid slow, generic date parsing Simple profiling of `hg log -r .` revealed ~18,000 calls to mercurial.i18n.gettext() on the author's repository. The culprit was 3 _() calls in util.parsedate() multiplied by ~6000 obsmarkers originating from the parsing of obsmarkers. Changing the obsmarker code to parse the stored format of dates instead of going through a generic path eliminates these gettext() lookups and makes `hg log -r .` execute ~10% faster on the author's repo. The performance gain is proportional to the number of obsmarkers. The author attempted to patch util.parsedate() to avoid the gettext() lookups. However, that code is whacky and the author is jet lagged, so the approach was not attempted.
Fri, 29 Aug 2014 12:06:31 +0200 build: don't use -s flag for `which`
Kevin Bullock <kbullock@ringworld.org> [Fri, 29 Aug 2014 12:06:31 +0200] rev 22308
build: don't use -s flag for `which` `which -s` is a BSDism that doesn't exist on other versions of `which`. That means that even on Mac OS X, `make osx` breaks if you have another utils package installed (e.g. debianutils installed thru fink). Redirect output to /dev/null instead.
Fri, 29 Aug 2014 17:15:49 +0200 contrib: drop obsolete sample.hgrc
Matt Mackall <mpm@selenic.com> [Fri, 29 Aug 2014 17:15:49 +0200] rev 22307
contrib: drop obsolete sample.hgrc This was full of bad suggestions and is obsoleted by hg config --edit.
Fri, 29 Aug 2014 17:14:45 +0200 contrib: drop old convert-repo script
Matt Mackall <mpm@selenic.com> [Fri, 29 Aug 2014 17:14:45 +0200] rev 22306
contrib: drop old convert-repo script This has been obsolete since 2007.
Wed, 27 Aug 2014 18:35:34 +0200 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 27 Aug 2014 18:35:34 +0200] rev 22305
merge with stable
Sat, 23 Aug 2014 21:23:02 +0900 templater: enable alias predicates to be used in "revset()" function
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 23 Aug 2014 21:23:02 +0900] rev 22304
templater: enable alias predicates to be used in "revset()" function Before this patch, predicates defined in "[revsetalias]" can't be used in the query specified to template function "revset()", because: - "revset()" uses "localrepository.revs()" to get query result, but - "localrepository.revs()" passes "None" as "ui" to "revset.match()", then - "revset.match()" can't recognize any alias predicates To enable alias predicates to be used in "revset()" function, this patch invokes "revset.match()" directly with "repo.ui". This patch doesn't make "localrepository.revs()" pass "self.ui" to "revset.match()", because this may be intentional implementation to prevent alias predicates from shadowing built-in ones and breaking functions internally using "localrepository.revs()". Even if it isn't intentional one, the check for shadowing should be implemented (maybe on default branch) before fixing it for safety.
Wed, 27 Aug 2014 23:10:06 +0900 import: show the warning message for failure of merging stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Aug 2014 23:10:06 +0900] rev 22303
import: show the warning message for failure of merging Before this patch, no message is shown for failure of merging at "hg import". In such case, merging patch is imported as a normal revision silently, and it may confuse users. For simplicity, this patch recommends just using "--exact", even though importing the merging patch itself is possible without it if: - the hash of the 1st parent in the patch is equal to one of the patch imported just before (or the parent of the working directory, for the 1st patch of the series), and - the hash of the 2nd parent in the patch is known in the local repository
Wed, 27 Aug 2014 15:30:09 +0200 graft: fix collision detection with origin revisions that are missing stable
Mads Kiilerich <madski@unity3d.com> [Wed, 27 Aug 2014 15:30:09 +0200] rev 22302
graft: fix collision detection with origin revisions that are missing When grafting something with a matching origin, it would normally be skipped: skipping already grafted revision 123 (23 also has origin 12) But after stripping a graft origin, graft could fail with a reference to the origin that no longer exists: abort: unknown revision '5c095ad7e90f871700f02dd1fa5012cb4498a2d4'! Instead, detect that the origin is unknown and skip it anyway, like: skipping already grafted revision 8 (2 also has unknown origin 5c095ad7e90f871700f02dd1fa5012cb4498a2d4)
Sat, 23 Aug 2014 17:03:08 -0500 log: use correct phase info for parent field (issue4347) stable
Sean Farley <sean.michael.farley@gmail.com> [Sat, 23 Aug 2014 17:03:08 -0500] rev 22301
log: use correct phase info for parent field (issue4347) Previously, there was a copy / paste error with using the current changeset's phase information. We now look up the parent context explicitly. The line was too long so it is stored into a variable first.
Tue, 26 Aug 2014 22:03:32 +0200 convert: introduce --full for converting all files
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Aug 2014 22:03:32 +0200] rev 22300
convert: introduce --full for converting all files Convert will normally only process files that were changed in a source revision, apply the filemap, and record it has a change in the target repository. (If it ends up not really changing anything, nothing changes.) That means that _if_ the filemap is changed before continuing an incremental convert, the change will only kick in when the files it affects are modified in a source revision and thus processed. With --full, convert will make a full conversion every time and process all files in the source repo and remove target repo files that shouldn't be there. Filemap changes will thus kick in on the first converted revision, no matter what is changed. This flag should in most cases not make any difference but will make convert significantly slower. Other names has been considered for this feature, such as "resync", "sync", "checkunmodified", "all" or "allfiles", but I found that they were less obvious and required more explanation than "full" and were harder to describe consistently.
Tue, 26 Aug 2014 22:03:32 +0200 convert: refactor hg getchanges and caching
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Aug 2014 22:03:32 +0200] rev 22299
convert: refactor hg getchanges and caching
Tue, 26 Aug 2014 22:03:32 +0200 convert: refactor subversion getchanges and caching
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Aug 2014 22:03:32 +0200] rev 22298
convert: refactor subversion getchanges and caching
Tue, 26 Aug 2014 22:03:32 +0200 convert: remove incorrect and unused handling of removed svn directories
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Aug 2014 22:03:32 +0200] rev 22297
convert: remove incorrect and unused handling of removed svn directories Since it was introduced in f0c58fd4b798, tidy_dirs has been comparing the result of os.listdir with a string - which never can be true. Convert apparently works anyway and there is no test coverage of it. It also seems like it could make a bigger difference on older svn versions but is less relevant with more recent versions. Instead of trying to fix the code, we take the low risk option and remove it.
Tue, 26 Aug 2014 22:03:32 +0200 convert: use None value for missing files instead of overloading IOError
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Aug 2014 22:03:32 +0200] rev 22296
convert: use None value for missing files instead of overloading IOError The internal API used IOError to indicate that a file should be marked as removed. There is some correlation between IOError (especially with ENOENT) and files that should be removed, but using IOErrors to represent file removal internally required some hacks. Instead, use the value None to indicate that the file not is present. Before, spurious IO errors could cause commits that silently removed files. They will now be reported like all other IO errors so the root cause can be fixed.
Wed, 27 Aug 2014 12:30:28 +0200 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 27 Aug 2014 12:30:28 +0200] rev 22295
merge with stable
Mon, 25 Aug 2014 03:27:51 +0200 convert: p4: ignore purged files with p4d 2012.2 and later
Mads Kiilerich <madski@unity3d.com> [Mon, 25 Aug 2014 03:27:51 +0200] rev 22294
convert: p4: ignore purged files with p4d 2012.2 and later Perforce has the concept of "+Sn" files where only the last revisions of the file is stored. In p4d 2012.1 old purged revisions were not included in the "manifest". With 2012.2 they started being included and convert's getfile failed to recognize the "purged" flag and saw it as an empty file. That made test-convert-p4-filetypes.t fail. There is no point in storing an empty file as placeholder for a purged file so we restore the old behaviour by checking the flag and letting getfile consider purged files deleted. (It is questionable whether it makes sense to convert not-yet-purged +S files to mercurial ... but that is another question.)
Mon, 25 Aug 2014 03:27:51 +0200 tests: fix p4 tests so they use separate ports and can be run in parallel
Mads Kiilerich <madski@unity3d.com> [Mon, 25 Aug 2014 03:27:51 +0200] rev 22293
tests: fix p4 tests so they use separate ports and can be run in parallel
Tue, 26 Aug 2014 22:03:30 +0200 run-tests: report skipped tests as "skipped" - they might still be "relevant"
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Aug 2014 22:03:30 +0200] rev 22292
run-tests: report skipped tests as "skipped" - they might still be "relevant"
Sun, 24 Aug 2014 12:35:53 +0900 ui: add brief comment why raw_input() needs dummy ' ' prompt string
Yuya Nishihara <yuya@tcha.org> [Sun, 24 Aug 2014 12:35:53 +0900] rev 22291
ui: add brief comment why raw_input() needs dummy ' ' prompt string Retrieved from 17ffb30d9174. I was about to move ' ' to label(msg + ' ', 'ui.prompt') so that subclass can distinguish prompt output from data. But it was not that simple.
Sun, 24 Aug 2014 23:47:26 +0900 largefiles: remove redundant "updatelfiles" invocation in "lfilesrepo.commit"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:26 +0900] rev 22290
largefiles: remove redundant "updatelfiles" invocation in "lfilesrepo.commit" After previous patches, largefiles in the working directory are ensured to be updated before "repo.commit" invocation for automated committing below: - by "overrides.mergeupdate" via "merge.update" for rebase - by "overrides.scmutilmarktouched" via "patch.patch" for transplant This patch removes redundant "lfcommands.updatelfiles" invocation in "Case 0" code path of "lfilesrepo.commit" for automated committing, and revises detailed comment.
Sun, 24 Aug 2014 23:47:26 +0900 largefiles: update largefiles even if transplant is aborted by conflict
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:26 +0900] rev 22289
largefiles: update largefiles even if transplant is aborted by conflict Before this patch, largefiles in the working directory aren't updated correctly, if transplant is aborted by conflict. This prevents users from viewing appropriate largefiles while resolving conflicts. While transplant, largefiles in the working directory are updated only at successful committing in the special code path of "lfilesrepo.commit()". To update largefiles even if transplant is aborted by conflict, this patch wraps "scmutil.marktouched", which is invoked from "patch.patch" with "files" list of added/modified/deleted files. This patch invokes "updatelfiles" with: - "printmessage=False", to suppress "getting changed largefiles ..." messages while automated committing by transplant - "normallookup=True", because "patch.patch" doesn't update dirstate for modified files in such case, "normallookup=False" may cause marking modified largefiles as "clean" unexpectedly
Sun, 24 Aug 2014 23:47:26 +0900 largefiles: update largefiles even if rebase is aborted by conflict
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:26 +0900] rev 22288
largefiles: update largefiles even if rebase is aborted by conflict Before this patch, largefiles in the working directory aren't updated correctly, if rebase is aborted by conflict. This prevents users from viewing appropriate largefiles while resolving conflicts. While rebase, largefiles in the working directory are updated only at successful committing in the special code path of "lfilesrepo.commit()". To update largefiles even if rebase is aborted by conflict, this patch centralizes the logic of updating largefiles in the working directory into the "mergeupdate" wrapping "merge.update". This is a temporary way to fix with less changes. For fundamental resolution of this kind of problems in the future, largefiles in the working directory should be updated with other (normal) files simultaneously while "merge.update" execution: maybe by hooking "applyupdates". "Action list based updating" introduced by hooking "applyupdates" will also improve performance of updating, because it automatically decreases target files to be checked. Just after this patch, there are some improper things in "Case 0" code path of "lfilesrepo.commit()": - "updatelfiles" invocation is redundant for rebase - detailed comment doesn't meet to rebase behavior These will be resolved after the subsequent patch for transplant, because this code path is shared with transplant. Even though replacing "merge.update" in rebase extension by "hg.merge" can also avoid this problem, this patch chooses centralizing the logic into "mergeupdate", because: - "merge.update" invocation in rebase extension can't be directly replaced by "hg.merge", because: - rebase requires some extra arguments, which "hg.merge" doesn't take (e.g. "ancestor") - rebase doesn't require statistics information forcibly displayed in "hg.merge" - introducing "mergeupdate" can resolve also problem of some other code paths directly using "merge.update" largefiles in the working directory aren't updated regardless of the result of commands below, before this patch: - backout (for revisions other than the parent revision of the working directory without "--merge") - graft - histedit (for revisions other than the parent of the working directory When "partial" is specified, "merge.update" doesn't update dirstate entries for standins, even though standins themselves are updated. In this case, "normallookup" should be used to mark largefiles as "possibly dirty" forcibly, because applying "normal" on lfdirstate treats them as "clean" unexpectedly. This is reason why "normallookup=partial" is specified for "lfcommands.updatelfiles". This patch doesn't test "hg rebase --continue", because it doesn't work correctly if largefiles in the working directory are modified manually while resolving conflicts. This will be fixed in the next step of refactoring for largefiles. All changes of tests/*.t files other than test-largefiles-update.t in this patch come from invoking "updatelfiles" not after but before statistics output of "hg.update", "hg.clean" and "hg.merge".
Sun, 24 Aug 2014 23:47:26 +0900 largefiles: move "updatestandin" invocation to "hg.updaterepo" wrapper
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:26 +0900] rev 22287
largefiles: move "updatestandin" invocation to "hg.updaterepo" wrapper Code paths below expect "hg.updaterepo" (or "hg.update" using it) to execute linear merging: - "update" in commands - "postincoming" in commands, used for: - "hg pull --update" - "hg unbundle --update" - "hgsubrepo.get" in subrepo For linear merging with largefiles, standins should be updated according to (possibly dirty) largefiles before "merge.update" invocation to detect conflicts correctly. Before this patch, only the "update" command can execute linear merging correctly, because largefiles extension takes care of only it. This patch moves "updatestandin" invocation from "overrideupdate" ("hg update" wrapper) to "_hgupdaterepo" ("hg.updaterepo" wrapper) to execute linear merging in "hg.updaterepo" correctly. This is also a preparation to centralize the logic of updating largefiles in the working directory into the function wrapping "merge.update" in the subsequent patch.
Sun, 24 Aug 2014 23:47:26 +0900 largefiles: unlink standins not known to the restored dirstate at rollback
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:26 +0900] rev 22286
largefiles: unlink standins not known to the restored dirstate at rollback Before this patch, standinds not known to the restored dirstate at rollback still exist after rollback of the parent of the working directory, and they become orphans unexpectedly. This patch unlinks standins not known to the restored dirstate. This patch saves names of standins matched against not "repo.dirstate[f] == 'a'" but "repo.dirstate[f] != 'r'" before rollback, because branch merging marks files newly added to dirstate as not "a" but "n". Such standins will also become orphan after rollback, because they are not known to the restored dirstate.
Sun, 24 Aug 2014 23:47:25 +0900 largefiles: restore standins according to restored dirstate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:25 +0900] rev 22285
largefiles: restore standins according to restored dirstate Before this patch, standins are restored from the NEW parent of the working directory at "hg rollback", and this causes: - standins removed in the rollback-ed revision are restored, and become orphan, because they are already marked as "R" in the restored dirstate and expected to be unlinked - standins added in the rollback-ed revision are left as they were before rollback, because they are not included in the new parent (this may not be so serious) This patch replaces the "merge.update" invocation with a specific implementation to restore standins according to restored dirstate. This is also the preparation to centralize the logic of updating largefiles into the function wrapping "merge.update" in the subsequent patch. After that patch, "merge.update" will also update largefiles in the working directory and be redundant for restoring standins only.
Sun, 24 Aug 2014 23:47:25 +0900 largefiles: restore standins from non branch-tip parent at rollback correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:25 +0900] rev 22284
largefiles: restore standins from non branch-tip parent at rollback correctly Before this patch, "hg rollback" can't restore standins correclty, if: - old parent of the working directory is rollback-ed, and - new parent of the working directory is not branch-tip "overriderollback" uses "merge.update" as a kind of "revert" utility to restore only standins with "node=None", and this makes "merge.update" choose "branch-tip" revision as the updating target unexpectedly. Then, "merge.update" restores standins from the branch-tip revision regardless of the parent of the working directory after rollback and this may cause unexpected behavior. This patch invokes "merge.update" with "node='.'" to restore standins from the parent revision of the working directory. In fact, this "merge.update" invocation will be replaced in the subsequent patch to fix another problem, but this change is usefull to inform reason why such complicated case should be tested.
Sun, 24 Aug 2014 23:47:25 +0900 largefiles: omit restoring standins if working parent is not rollbacked
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 24 Aug 2014 23:47:25 +0900] rev 22283
largefiles: omit restoring standins if working parent is not rollbacked For efficiency, this patch omits restoring standins and updating lfdirstate, if the parent of the working directory is not rollbacked. This patch adds the test not to confirm whether restoring is skipped or not, but to detect unexpected regression in the future: it is difficult to distinguish between skipping and perfectly restoring.
Tue, 26 Aug 2014 13:11:53 +0200 repoview: fix 0L with pack/unpack for 2.4
Matt Mackall <mpm@selenic.com> [Tue, 26 Aug 2014 13:11:53 +0200] rev 22282
repoview: fix 0L with pack/unpack for 2.4
Mon, 25 Aug 2014 15:10:09 +0200 help: add pad function to template help stable
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> [Mon, 25 Aug 2014 15:10:09 +0200] rev 22281
help: add pad function to template help Commit aa51392da507 introduced a pad function for use in templates, but did not add the corresponding documentation to 'hg help templating'.
Fri, 22 Aug 2014 16:40:34 -0400 histedit: use str.startswith to check for comments in action list
Mike Edgar <adgar@google.com> [Fri, 22 Aug 2014 16:40:34 -0400] rev 22280
histedit: use str.startswith to check for comments in action list
Fri, 22 Aug 2014 16:37:55 -0400 histedit: drop duplicate line extracting keep option
Mike Edgar <adgar@google.com> [Fri, 22 Aug 2014 16:37:55 -0400] rev 22279
histedit: drop duplicate line extracting keep option
Sat, 23 Aug 2014 23:03:50 +0900 import: avoid editor invocation when importing with "--exact" for exact-ness
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 23 Aug 2014 23:03:50 +0900] rev 22278
import: avoid editor invocation when importing with "--exact" for exact-ness Before this patch, external editor is invoked when imported patch has no commit message, even if "--exact" is specified. Then, exact-ness is broken, because empty commit message causes failure of committing. This patch avoids editor invocation at importing with "--exact" for exact-ness, because commit message in the patch should be kept as it is in such case, even if it is empty.
Sat, 23 Aug 2014 23:03:50 +0900 import: disallow meaningless combination of "--exact" and "--edit"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 23 Aug 2014 23:03:50 +0900] rev 22277
import: disallow meaningless combination of "--exact" and "--edit" Before this patch, "hg import" allows combination of "--exact" and "--edit", even though editing commit message breaks exact-ness. This patch disallows meaningless combination of "--exact" and "--edit".
Sun, 16 Mar 2014 17:31:31 +0200 config: highlight parse error caused by leading spaces (issue3214)
Razvan Cojocaru <razvan.cojocaru93@gmail.com> [Sun, 16 Mar 2014 17:31:31 +0200] rev 22276
config: highlight parse error caused by leading spaces (issue3214) Added "unexpected leading whitespace" message to parse error when .hgrc has a line that starts with whitespace. Helps new users unfamiliar with syntax of rc file.
Wed, 20 Aug 2014 22:52:56 -0700 test-config: add tests for invalid syntax
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 22:52:56 -0700] rev 22275
test-config: add tests for invalid syntax This was not tested and there is more to come in the next patch.
Tue, 19 Aug 2014 23:22:44 -0700 debugobsolete: add a --rev argument
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 23:22:44 -0700] rev 22274
debugobsolete: add a --rev argument This argument can be used to list markers relevant to a set of revisions. We add a test for this option and the relevant computation in the same move.
Wed, 20 Aug 2014 18:11:23 -0700 obsolete: rename `allmarkers` to `getmarkers`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 18:11:23 -0700] rev 22273
obsolete: rename `allmarkers` to `getmarkers` This function is going to gain a "nodes" argument to filter the markers to the ones relevant to <nodes> only.
Wed, 20 Aug 2014 00:43:08 -0700 debugobsolete: add a way to record parent information
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 00:43:08 -0700] rev 22272
debugobsolete: add a way to record parent information We add a ``--record-parents`` flag to debugobsolete. This can be used to record parent information in the marker when the precursors are known locally. This will be useful to test the "relevant markers" computation.
Tue, 19 Aug 2014 17:03:10 -0700 obsstore: add relevantmarkers method
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 17:03:10 -0700] rev 22271
obsstore: add relevantmarkers method We add a ``relevantmarkers`` method to fetch all markers that seem relevant to a set of nodes. See function documentation about how this set is computed. This will let us exchange only the markers that seem "relevant" to the set of changesets related to a push or a pull. The approach used to define "relevant" has been successfully tested in evolve for 6 months.
Tue, 19 Aug 2014 16:53:53 -0700 obsstore: keep track of children information
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 16:53:53 -0700] rev 22270
obsstore: keep track of children information We use the new `parents` field to build a dictionary of markers that touch children of a node. This will be used to link prune markers to a set of exchanged nodes.
Wed, 20 Aug 2014 17:36:54 -0700 push: check if local and remote support evolution during discovery
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 17:36:54 -0700] rev 22269
push: check if local and remote support evolution during discovery We can now directly prevent any evolution-related operation from happening by using an empty set for outgoing markers. So we detect if no transfers should occur and use an empty set in this case.
Tue, 19 Aug 2014 16:46:17 -0700 obsstore: drop outdated comment
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 16:46:17 -0700] rev 22268
obsstore: drop outdated comment This comment was associated with a now-defunct line.
Thu, 21 Aug 2014 10:07:30 -0400 cvsps: add two more tiebreakers in cscmp
Augie Fackler <raf@durin42.com> [Thu, 21 Aug 2014 10:07:30 -0400] rev 22267
cvsps: add two more tiebreakers in cscmp test-convert-cvs.t has been a little flaky for a while now. Add an extra tiebreaker in cscmp so that all the cases in the test will sort reliably. Without this patch, test-convert-cvs.t failed after 346 runs. With this patch, I stopped trying to get it to fail after 615 runs. While not conclusive, that makes me pretty optimistic that this is a working fix.
Sat, 16 Aug 2014 17:59:26 +0900 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Aug 2014 17:59:26 +0900] rev 22266
annotate: abort early if no file is specified This change is intended to move the getdate function near the opmap table.
Wed, 20 Aug 2014 15:07:25 -0700 purge: avoid full walks when directories aren't purged
Siddharth Agarwal <sid0@fb.com> [Wed, 20 Aug 2014 15:07:25 -0700] rev 22265
purge: avoid full walks when directories aren't purged If match.traversedir is not None, we're forced to do full walks. However when we aren't purging directories we don't need to set match.traversedir to anything. This speeds up non-full walks such as the one hgwatchman makes possible. For mozilla-central with hgwatchman enabled, 'hg purge --files' goes from 0.88 seconds to 0.22.
Thu, 21 Aug 2014 16:05:29 -0700 clone: for local clones, copy over filtered branchcaches as well (issue4286)
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Aug 2014 16:05:29 -0700] rev 22264
clone: for local clones, copy over filtered branchcaches as well (issue4286) Local clones copy/hardlink over files directly, so the branchcaches should all be valid. There's a slight chance that a read operation would update one of the branchcaches, but we hold a lock over the source repo so they shouldn't cause an invalid branchcache to be copied over, just a different, valid one.
Thu, 21 Aug 2014 15:58:32 -0700 clone: for local clones, copy branchcache from the right location (issue4286)
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Aug 2014 15:58:32 -0700] rev 22263
clone: for local clones, copy branchcache from the right location (issue4286) The unfiltered branchcache is in .hg/cache/branch2, not .hg/store/cache/branch2.
Wed, 20 Aug 2014 14:33:59 -0400 obsolete: avoid 2-argument form of enumerate, which was new in Python 2.6
Augie Fackler <raf@durin42.com> [Wed, 20 Aug 2014 14:33:59 -0400] rev 22262
obsolete: avoid 2-argument form of enumerate, which was new in Python 2.6
Wed, 20 Aug 2014 13:21:41 -0400 repoview: use util.sha1() instead of hashlib.sha1()
Augie Fackler <raf@durin42.com> [Wed, 20 Aug 2014 13:21:41 -0400] rev 22261
repoview: use util.sha1() instead of hashlib.sha1() 45b5cd948a4d accidentally broke Python 2.4 compatibility, this fixes it.
Mon, 18 Aug 2014 17:17:23 -0700 debugobsolete: display parents information from markers
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 17:17:23 -0700] rev 22260
debugobsolete: display parents information from markers Now that we have a new field, we need a way to visualize it.
Mon, 18 Aug 2014 17:14:27 -0700 obsmarkers: add a `parentnodes` method to retrieve parent information
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 17:14:27 -0700] rev 22259
obsmarkers: add a `parentnodes` method to retrieve parent information
Mon, 18 Aug 2014 16:28:44 -0700 obsstore: also store the 'parents' field on disk
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:28:44 -0700] rev 22258
obsstore: also store the 'parents' field on disk We now store the `parents` field on disk. We use the same strategy as for `date`: We stick it into the metadata. This is slow and dirty, but this is also the only way we currently have. At some point we'll have a new obsstore format to store this properly.
Mon, 18 Aug 2014 17:06:08 -0700 obsstore: drop 'date' from the metadata dictionary
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 17:06:08 -0700] rev 22257
obsstore: drop 'date' from the metadata dictionary We are extracting the `date` information from the metadata at read time. However, we failed to remove it from the metadata returned in the markers. This is now fixed.
Mon, 18 Aug 2014 16:17:16 -0700 createmarkers: automatically record the parent of pruned changesets
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:17:16 -0700] rev 22256
createmarkers: automatically record the parent of pruned changesets We need this information to build the set of relevant markers during exchanges. This can only be done at the `createmarkers` level since the `obsstore.create` function does not have a repo and therefore has no access to the parent information.
Mon, 18 Aug 2014 16:12:29 -0700 obsstore: add a `parents` argument to obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:12:29 -0700] rev 22255
obsstore: add a `parents` argument to obsstore.create We need a way to pass the information to the function. Some guru told me that what's arguments are made for.
Mon, 18 Aug 2014 16:08:44 -0700 obsstore: add a `parents` field
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:08:44 -0700] rev 22254
obsstore: add a `parents` field This field is intended to store the parent of the precursor. This is useful to attach pruned changesets to a set of exchanged changesets. We currently just add the fields with a None value. None stands for "no data recorded".
Tue, 19 Aug 2014 14:42:08 -0700 obsstore: add some documentation about the marker fields
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 14:42:08 -0700] rev 22253
obsstore: add some documentation about the marker fields As the number of fields grow, it makes sense to start documenting their contents.
Sat, 16 Aug 2014 10:43:59 +0900 transplant: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22252
transplant: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: EXTENSION[.COMMAND][.ROUTE] - EXTENSION: name of extension - COMMAND: name of command, if there are two or more commands in EXTENSION - ROUTE: name of route, if there are two or more routes in COMMAND This patch newly adds "normal" and "merge" as ROUTE, to distinguish merge commits from other. This patch adds 4 test patterns to test combination of "merge"(x2) and "--continue"(x2).
Sat, 16 Aug 2014 10:43:59 +0900 rebase: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22251
rebase: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: EXTENSION[.COMMAND][.ROUTE] - EXTENSION: name of extension - COMMAND: name of command, if there are two or more commands in EXTENSION - ROUTE: name of route, if there are two or more routes in COMMAND This patch newly adds "merge" as ROUTE, to distinguish merge commits from other. This patch passes bool as "ctxorbool" to "mergeeditform", because working context has always 2 parents at this point. Dropping the second parent of non-merging commits is executed in "concludenode". Unlike other patches in this series (e.g. for "hg commit"), this patch doesn't add "normal.normal"/"normal.merge" style ROUTEs, because there is no "merge" case in "collapse" ROUTE.
Sat, 16 Aug 2014 10:43:59 +0900 import: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22250
import: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: COMMAND[.ROUTE] - COMMAND: name of command - ROUTE: name of route, if there are two or more routes in COMMAND This patch uses "normal.normal" and "normal.merge" as ROUTE of "editform" instead of "normal", to distinguish merge commits from other in "hg import" without "--bypass" case. This patch assumes "editform" variations for "hg import" below: import.normal.normal import.normal.merge import.bypass.normal import.bypass.merge Unlike other patches in this series, this patch uses "editor.sh" instead of "checkeditform.sh" for the name of the script to check "HGEDITFORM", because it has to do more than checking "HGEDITFORM". To invoke editor forcibly in "test-import-merge.t", this patch creates the patch not having patch description as "merge.nomsg.diff".
Sat, 16 Aug 2014 10:43:59 +0900 commit: change "editform" to distinguish merge commits from other (--amend)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22249
commit: change "editform" to distinguish merge commits from other (--amend) "editform" argument for "getcommiteditor" is decided according to the format below: COMMAND[.ROUTE] - COMMAND: name of command - ROUTE: name of route, if there are two or more routes in COMMAND This patch uses "amend.normal" and "amend.merge" as ROUTE of "editform" instead of "amend", to distinguish merge commits from other in "hg commit --amend" case.
Sat, 16 Aug 2014 10:43:59 +0900 commit: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22248
commit: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: COMMAND[.ROUTE] - COMMAND: name of command - ROUTE: name of route, if there are two or more routes in COMMAND This patch uses "normal.normal" and "normal.merge" as ROUTE of "editform" instead of "normal", to distinguish merge commits from others in "hg commit" without "--amend" case. This patch assumes "editform" variations for "hg commit" below: commit.normal.normal commit.normal.merge commit.amend.normal commit.amend.merge "mergeeditform" is factored out for subsequent patches. It takes "ctxorbool" argument, because context object can't be passed in some cases.
Sat, 16 Aug 2014 10:19:26 -0700 test-ssh: verify that stderr from remote is printed (issue4336)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 16 Aug 2014 10:19:26 -0700] rev 22247
test-ssh: verify that stderr from remote is printed (issue4336) The issue fixed in the previous patch was uncovered by implementing an extension that printed additional output locally before the push command completed. This test emulates that. If this change is applied before the previous patch, the test will fail on Linux, with the local output being printed before the "remote: " lines.
Sat, 16 Aug 2014 10:28:59 -0700 posix: implement readpipe using non-blocking I/O (issue4336)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 16 Aug 2014 10:28:59 -0700] rev 22246
posix: implement readpipe using non-blocking I/O (issue4336) On Linux, fstat().st_size of a pipe always returns 0, even if the pipe has data available for reading. This meant that reading from and subsequently printing the stderr pipe content after wireproto commands over SSH meant that available data wasn't being printed. We now implement pipe reading on POSIX by doing a non-blocking read for all available data.
Fri, 15 Aug 2014 20:02:18 -0700 platform: implement readpipe()
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Aug 2014 20:02:18 -0700] rev 22245
platform: implement readpipe() Reading all available data from a pipe has a platform-dependent implementation. This patch establishes platform.readpipe() by copying the inline implementation in sshpeer.readerr(). The implementations for POSIX and Windows are currently identical. The POSIX implementation will be changed in a subsequent patch.
Fri, 15 Aug 2014 19:18:21 -0700 exchange: remove duplicated addition to pushop.stepdone
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 19:18:21 -0700] rev 22244
exchange: remove duplicated addition to pushop.stepdone Not sure how it got there but it is useless.
Mon, 18 Aug 2014 20:23:37 -0400 exchange: drop superfluous parens
Augie Fackler <raf@durin42.com> [Mon, 18 Aug 2014 20:23:37 -0400] rev 22243
exchange: drop superfluous parens
Fri, 15 Aug 2014 19:03:42 -0700 push: add bookmarks to the unified bundle2 push
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 19:03:42 -0700] rev 22242
push: add bookmarks to the unified bundle2 push We use the `pushkey` part to exchange bookmark updates within the unified bundle2 push. Note that this only applies on update (moving a bookmark known on both sides) since bookmark export (creation of a new bookmark on remote) is apparently done outside of the _push function.
(0) -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 tip