Tue, 20 Jan 2015 15:05:44 -0800 commit: remove reverse search for copy source when not in parent (issue4476) stable
Ryan McElroy <rmcelroy@fb.com> [Tue, 20 Jan 2015 15:05:44 -0800] rev 23929
commit: remove reverse search for copy source when not in parent (issue4476) Previously, we had weird, nonsensical behavior when committing a file move with a missing source. This removes that weird logic and tests that the bug this strange behavior caused is fixed. Also adds a longish comment to prevent some poor soul from accidentally re-implementing the bug in the future.
Tue, 20 Jan 2015 14:51:11 -0800 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Tue, 20 Jan 2015 14:51:11 -0800] rev 23928
merge with i18n
Sun, 18 Jan 2015 11:16:45 -0200 i18n-pt_BR: synchronized with db8e3f7948b1 stable
Wagner Bruna <wbruna@yahoo.com> [Sun, 18 Jan 2015 11:16:45 -0200] rev 23927
i18n-pt_BR: synchronized with db8e3f7948b1
Sun, 18 Jan 2015 22:21:53 -0500 convert: handle LookupError in mercurial_source.lookuprev() stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 18 Jan 2015 22:21:53 -0500] rev 23926
convert: handle LookupError in mercurial_source.lookuprev() This is in line with the documentation on the base class method, and is related to issue4496 (but doesn't fix the reporter's problem of not mangling other data that matches a revision pattern). Now instead of aborting when there is an ambiguous source rev, it simply won't update the commit comment. A warning message might be nice, but a None return masks whether the problem was no matching revision, or more than one. The only other caller of this is the logic that converts tags, but those are never ambiguous since they are always 40 characters. A test isn't feasible because there simply aren't enough commits in the test suite repos to have an ambiguous identifier that is at least 6 characters long, and it would be too easy for the ambiguity to disappear when unrelated changes are made. Instead, I simply ran 'hg --traceback log -r c' on the hg repo, and handled the error it threw.
Sun, 18 Jan 2015 22:24:14 -0800 color: add missing 'dim' in _effects stable
Sean Farley <sean.michael.farley@gmail.com> [Sun, 18 Jan 2015 22:24:14 -0800] rev 23925
color: add missing 'dim' in _effects It seems that this has been missing for people running in 'ansi' mode.
Sat, 17 Jan 2015 15:03:41 -0800 diff: use binary diff when copy source is binary stable
Martin von Zweigbergk <martinvonz@google.com> [Sat, 17 Jan 2015 15:03:41 -0800] rev 23924
diff: use binary diff when copy source is binary When a binary source has been copied or renamed into a non-binary file, we don't check whether the copy source was binary. There is a code comment explaining that a git mode will be forced anyway in order to capture the copy record (i.e. losedatafn() will be called). This is true, but forcing git mode is not the only effect binary files have: when git mode was already requested, we use the binary-ness to tell us whether to use a regular unified diff or a git binary diff. The user sees this as a "Binary file $file has changed" instead of the binary
Sun, 18 Jan 2015 15:15:40 -0500 largefiles: fix commit of a directory with no largefile changes (issue4330) stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 18 Jan 2015 15:15:40 -0500] rev 23923
largefiles: fix commit of a directory with no largefile changes (issue4330) When a directory is named in the commit file list, the previous behavior was to walk the list, and if no normal files in the directory were also named, add the corresponding standin for each largefile in that directory. The directory is then dropped from the list, so that committing a directory with no normal file changes works. It then added the corresponding standin directory for the first largefile seen, by prefixing it with '.hglf/'. The latter is unnecessary since each affected largefile is explicitly referenced by its standin in the list. It also caused an abort if there were no changed largefiles in the directory, because none of its standins changed: abort: .hglf/foo/bar: no match under directory! This list of files is used to tweak a matcher in lfutil.updatestandinsbymatch(), which is what is passed to commit(). The status() call that is ultimately done in the commit code with this matcher seems to have some OS specific differences. It is not necessary to append '.' for Windows to run the largefiles tests cleanly. But if '.' is not added to the list, the match function isn't called on Linux, so status() would miss any normal files that were also in a named directory. The commit then proceeds without those normal files, or says "nothing changed" if there were no changed largefiles in the directory. This is not filesystem specific, as VFAT on Linux had the same behavior as when run on ext4. It is also not an issue with lfilesrepo.status(), since that only calls the overridden implementation when paths are passed to commit. I dont have access to an OS X machine ATM to test there. Maybe there's a better way to do this. But since the standin directory for the first largefile was previously being added, and that caused the same walk in status(), there's no preformance change to this. There is no danger of erroneously committing files in '.', because the original match function is called, and if it fails, the lfutil.updatestandinsbymatch() tweaked matcher only indicates a match if the file is in the list of standins- and '.' never is. The added tests confirm this.
Sun, 18 Jan 2015 16:38:56 -0500 test-tools: update for platforms without symlink support after 5b20e4c32117 stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 18 Jan 2015 16:38:56 -0500] rev 23922
test-tools: update for platforms without symlink support after 5b20e4c32117 The change was triggered by removing the 'baz' hardlink.
Sun, 18 Jan 2015 16:33:41 -0500 tests: add "(glob)" to output in test-histedit-commute.t for Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 18 Jan 2015 16:33:41 -0500] rev 23921
tests: add "(glob)" to output in test-histedit-commute.t for Windows This goes with the changes in 3831e9b3750a.
Sat, 17 Jan 2015 18:29:30 -0800 Added signature for changeset db8e3f7948b1 stable
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 18:29:30 -0800] rev 23920
Added signature for changeset db8e3f7948b1
Sat, 17 Jan 2015 18:29:05 -0800 Added tag 3.3-rc for changeset db8e3f7948b1 stable
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 18:29:05 -0800] rev 23919
Added tag 3.3-rc for changeset db8e3f7948b1
Sat, 17 Jan 2015 18:28:30 -0800 merge default into stable for 3.3 feature freeze stable 3.3-rc
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 18:28:30 -0800] rev 23918
merge default into stable for 3.3 feature freeze
Sat, 17 Jan 2015 22:01:14 -0200 messages: quote "hg help" hints consistently
Wagner Bruna <wbruna@yahoo.com> [Sat, 17 Jan 2015 22:01:14 -0200] rev 23917
messages: quote "hg help" hints consistently
Sat, 17 Jan 2015 18:08:47 -0800 bundle2: fix parttype enforcement
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 18:08:47 -0800] rev 23916
bundle2: fix parttype enforcement As spotted by Malte Helmert.
Sat, 17 Jan 2015 17:59:30 -0800 test-tools: another vfat fix
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 17:59:30 -0800] rev 23915
test-tools: another vfat fix
Sat, 17 Jan 2015 15:54:03 -0800 test-tools: check for unix permissions for hardlinking
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 15:54:03 -0800] rev 23914
test-tools: check for unix permissions for hardlinking
Sat, 17 Jan 2015 15:28:56 -0800 tests: more fixes for f
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 15:28:56 -0800] rev 23913
tests: more fixes for f
Sat, 17 Jan 2015 13:53:56 -0800 tests: teach f not to report symlink mode bits
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 13:53:56 -0800] rev 23912
tests: teach f not to report symlink mode bits They're not meaningful or portable
Sat, 17 Jan 2015 13:53:16 -0800 tests: teach f not to report directory size
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 13:53:16 -0800] rev 23911
tests: teach f not to report directory size It's not meaningful or portable
Sat, 17 Jan 2015 13:44:43 -0800 test-histedit-commute: call helper script with sh
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 13:44:43 -0800] rev 23910
test-histedit-commute: call helper script with sh Buildbot pointed out that this test wasn't passing on Linux+vfat because there's no chmod for shell scripts.
Sat, 17 Jan 2015 13:38:17 -0800 test-tools: fix portability issues
Matt Mackall <mpm@selenic.com> [Sat, 17 Jan 2015 13:38:17 -0800] rev 23909
test-tools: fix portability issues
Sat, 17 Jan 2015 13:13:16 -0800 progress: add a lock to prepare for introducing a thread
Solomon Matthews <smat@fb.com> [Sat, 17 Jan 2015 13:13:16 -0800] rev 23908
progress: add a lock to prepare for introducing a thread
Sat, 17 Jan 2015 13:10:37 -0800 progress: move update check into helper method
Solomon Matthews <smat@fb.com> [Sat, 17 Jan 2015 13:10:37 -0800] rev 23907
progress: move update check into helper method
Sat, 17 Jan 2015 13:09:33 -0800 progress: move current topic to member variable
Solomon Matthews <smat@fb.com> [Sat, 17 Jan 2015 13:09:33 -0800] rev 23906
progress: move current topic to member variable
Thu, 15 Jan 2015 20:03:28 -0800 progress: add try/finally to make the diffs for the next commit more readable
Solomon Matthews <smat@fb.com> [Thu, 15 Jan 2015 20:03:28 -0800] rev 23905
progress: add try/finally to make the diffs for the next commit more readable No change in behavior.
Fri, 16 Jan 2015 18:34:14 -0800 transaction: include backup file in the "undo" transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Jan 2015 18:34:14 -0800] rev 23904
transaction: include backup file in the "undo" transaction Once the transaction is closed, we now write transaction related data for possible future undo. For now, we only do it for full file "backup" because their were not handle at all in that case. In the future, we could move all the current logic to set undo up (that currently exists in localrepository) inside transaction itself, but it is not strictly requires to solve the current situation.
Fri, 16 Jan 2015 19:35:04 -0800 transaction: pass the name of the "undo" journal to the transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Jan 2015 19:35:04 -0800] rev 23903
transaction: pass the name of the "undo" journal to the transaction It is time for the transaction to be responsible for setting up the undo data. It is necessary to move this logic into the transaction because many more files are handled now, and the transaction is the object tracking them all. The value can be set to None if no undo should be set.
Fri, 16 Jan 2015 19:29:16 -0800 rollback: have an empty entry for the vfsmap in rollback
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Jan 2015 19:29:16 -0800] rev 23902
rollback: have an empty entry for the vfsmap in rollback This empty string key is used for the store. This will be needed to properly rollback backup in a future changesets.
Fri, 16 Jan 2015 14:54:24 -0800 transaction: clarify the name of 'journal' argument for transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Jan 2015 14:54:24 -0800] rev 23901
transaction: clarify the name of 'journal' argument for transaction The argument is a string containing the journal name (used as prefix for all other transaction file). This is not the transaction file itself. So we clarify this.
Mon, 05 Jan 2015 12:44:15 -0800 transaction: use 'util.copyfile' for creating backup
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 05 Jan 2015 12:44:15 -0800] rev 23900
transaction: use 'util.copyfile' for creating backup Using 'copyfile' (single file) instead of 'copyfiles' (tree) will ensures destination file will be overwritten. This will prevent some abort if backup file are left in place for random reason. It also seems more correct.
Mon, 05 Jan 2015 12:39:09 -0800 copyfile: allow optional hardlinking
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 05 Jan 2015 12:39:09 -0800] rev 23899
copyfile: allow optional hardlinking Some code paths use 'copyfiles' (full tree) for a single file to take advantage of the best-effort-hard-linking parameter. We add similar parameter and logic to 'copyfile' (single file) for this purpose. The single file version have the advantage to overwrite the destination file if it exists.
Thu, 15 Jan 2015 16:51:13 -0800 repair: add experimental option to write bundle2 files
Eric Sumner <ericsumner@fb.com> [Thu, 15 Jan 2015 16:51:13 -0800] rev 23898
repair: add experimental option to write bundle2 files This adds an experimental option 'strip-bundle2-version' which causes backup bundles to use bundle2 formatting. Especially for generaldelta repositories, this should provide significant performance gains for any operation that needs to write a backup.
Thu, 15 Jan 2015 15:55:13 -0800 changegroup.getsubset: support multiple versions
Eric Sumner <ericsumner@fb.com> [Thu, 15 Jan 2015 15:55:13 -0800] rev 23897
changegroup.getsubset: support multiple versions Allow a version parameter to specify which version of the packer should be used
Thu, 15 Jan 2015 15:39:16 -0800 changegroup.writebundle: HG2Y support
Eric Sumner <ericsumner@fb.com> [Thu, 15 Jan 2015 15:39:16 -0800] rev 23896
changegroup.writebundle: HG2Y support This diff adds support to writebundle to generate a bundle2 wrapper; upcoming diffs will add an option to write a v2 changegroup part instead of v1 in these bundles.
Thu, 15 Jan 2015 14:39:41 -0800 changegroup.writebundle: provide ui
Eric Sumner <ericsumner@fb.com> [Thu, 15 Jan 2015 14:39:41 -0800] rev 23895
changegroup.writebundle: provide ui The next diff will add support for writing bundle2 files to writebundle, but the bundle2 generator wants access to a ui object. This changes the signature and callsites to pass one in.
Fri, 16 Jan 2015 16:25:30 -0800 test-module-imports: use test-repo requirement
Matt Mackall <mpm@selenic.com> [Fri, 16 Jan 2015 16:25:30 -0800] rev 23894
test-module-imports: use test-repo requirement
Fri, 09 Jan 2015 19:10:09 +0100 largefiles: don't rehash largefiles in updatelfiles if standin hash changed
Mads Kiilerich <madski@unity3d.com> [Fri, 09 Jan 2015 19:10:09 +0100] rev 23893
largefiles: don't rehash largefiles in updatelfiles if standin hash changed Standins are read before and after an update/merge, and all the standins that changes are handed to updatelfiles for getting their corresponding largefiles updated. updatelfiles would then hash the largefile and see if it already matched the new expected hash. If so, it would skip the update. If different, the largefile would be updated. It would happen very rarely that the largefile happened to match the new hash (and thus not the old one) and the hashing would thus be pointless ... and hashing is not cheap. Instead, when it is known that the standin hash changed (from an update), just update the standin unconditionally. If the largefile was "unsure" before the update, it was hashed at that point, so we know there is nothing to preserve. (Also, the hashing in updatelfiles was not used to preserve changes, but only to be lazy about updating the largefile, so nothing is lost by not doing this extra hashing.) There might be rare situations where we now will update largefiles that didn't have to be updated, but in all relevant cases (?) this will improve performance. Updates on a repo with some big largefiles has been seen to go from 9.19 s to 6.8 s - that is 26% less painful.
Fri, 16 Jan 2015 19:51:25 +0100 largefiles: show progress when checking standin hashes in outgoing changesets
Mads Kiilerich <madski@unity3d.com> [Fri, 16 Jan 2015 19:51:25 +0100] rev 23892
largefiles: show progress when checking standin hashes in outgoing changesets This checking can take a huge amount of time and we should give user a hint that something is going on.
Wed, 14 Jan 2015 17:09:55 -0800 unbundle: support bundle2 files
Eric Sumner <ericsumner@fb.com> [Wed, 14 Jan 2015 17:09:55 -0800] rev 23891
unbundle: support bundle2 files This adds support for bundle2 files to the unbundle command.
Fri, 16 Jan 2015 12:53:45 -0800 pullbundle2: extract addchangegroup result combining into its own function
Eric Sumner <ericsumner@fb.com> [Fri, 16 Jan 2015 12:53:45 -0800] rev 23890
pullbundle2: extract addchangegroup result combining into its own function This will also be used for 'hg unbundle'
Fri, 16 Jan 2015 15:31:45 -0500 histedit: add a test to show that issue4251 is fixed (issue4251)
Augie Fackler <raf@durin42.com> [Fri, 16 Jan 2015 15:31:45 -0500] rev 23889
histedit: add a test to show that issue4251 is fixed (issue4251) This will help us not regress this case in the future.
Thu, 15 Jan 2015 15:35:26 -0800 commands.debugbundle: bundle2 support
Eric Sumner <ericsumner@fb.com> [Thu, 15 Jan 2015 15:35:26 -0800] rev 23888
commands.debugbundle: bundle2 support This enables debugbundle to print supporting info for bundle2 files.
Mon, 12 Jan 2015 22:30:12 -0500 largefiles: cleanup overrideadd()
Matt Harbison <matt_harbison@yahoo.com> [Mon, 12 Jan 2015 22:30:12 -0500] rev 23887
largefiles: cleanup overrideadd() This was a remnant of the code prior to overridding cmdutil.add().
Mon, 12 Jan 2015 21:44:43 -0500 largefiles: enable subrepo support for add
Matt Harbison <matt_harbison@yahoo.com> [Mon, 12 Jan 2015 21:44:43 -0500] rev 23886
largefiles: enable subrepo support for add The --large, --normal and --lfsize args couldn't be passed to a subrepo before, and files in the subrepos would be added silently (if -v wasn't specified) as normal files. As an added bonus, 'hg add --dry-run' no longer prints that largefiles would also be added as normal files as well.
Mon, 12 Jan 2015 20:59:17 -0500 add: pass options via keyword args
Matt Harbison <matt_harbison@yahoo.com> [Mon, 12 Jan 2015 20:59:17 -0500] rev 23885
add: pass options via keyword args The largefiles extensions needs to be able to pass --large, --normal and --lfsize to subrepos via cmdutil.add() and hgsubrepo.add(). Rather than add additional special purpose arguments, stop extracting the existing args from the **opts passed to commands.add() and just pass them along.
Wed, 31 Dec 2014 18:24:32 -0500 largefiles: don't pop largefile-specific arguments to the add command
Matt Harbison <matt_harbison@yahoo.com> [Wed, 31 Dec 2014 18:24:32 -0500] rev 23884
largefiles: don't pop largefile-specific arguments to the add command The arguments will need to stay present when making add work with subrepos.
Sun, 11 Jan 2015 16:20:15 +0100 share: replace the bookmarks.shared file with an entry on a new "shared" file
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 11 Jan 2015 16:20:15 +0100] rev 23883
share: replace the bookmarks.shared file with an entry on a new "shared" file cd79fb4d75fd introduced a way to share bookmarks. When a repository share that shares bookmarks was created, a .hg/bookmarks.shared file was created to mark the repository share as one that shares its bookmarks. We have plans to introduce other levels of sharing, including a "full share" mode. Rather than creating a new ".shared" file for each new thing that we may want to share It seems better to create a single "shared" file that will list what is shared for a given shared repository. This should make it much easier to get a list of everything that is shared by a given shared repository. The shared file contains a list of shared "items" (such as bookmarks). Each shared "item" is added as a new line in the file. For now the only possible entry in the file is "bookmarks".
Sun, 02 Nov 2014 02:36:47 +0100 docker: support Fedora 21
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Nov 2014 02:36:47 +0100] rev 23882
docker: support Fedora 21
Fri, 16 Jan 2015 04:26:40 +0100 rpm: make Python 2.7.9 the default Python to include in rpms for EL 5
Mads Kiilerich <madski@unity3d.com> [Fri, 16 Jan 2015 04:26:40 +0100] rev 23881
rpm: make Python 2.7.9 the default Python to include in rpms for EL 5 Use the new and more TLS support in Python 2.7.9.
Fri, 16 Jan 2015 04:26:25 +0100 contrib: make Python 2.7.9 the default in Makefile.python
Mads Kiilerich <madski@unity3d.com> [Fri, 16 Jan 2015 04:26:25 +0100] rev 23880
contrib: make Python 2.7.9 the default in Makefile.python We should utilize (and test) the big API changes and new TLS functionality in Python 2.7.9 whenever possible.
Sun, 11 Jan 2015 01:51:52 +0100 localrepo: remove all external users of localrepo.wopener
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 11 Jan 2015 01:51:52 +0100] rev 23879
localrepo: remove all external users of localrepo.wopener This change touches every module in which repository.wopener was being used, and changes it for the equivalent repository.wvfs. It should now be possible to remove localrepo.wopener.
Sun, 11 Jan 2015 00:25:54 +0100 localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 11 Jan 2015 00:25:54 +0100] rev 23878
localrepo: remove all external users of localrepo.sopener This change touches every module in which repository.sopener was being used, and changes it for the equivalent repository.svfs. It should now be possible to remove localrepo.sopener.
Thu, 15 Jan 2015 23:17:12 +0100 localrepo: remove all external users of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 15 Jan 2015 23:17:12 +0100] rev 23877
localrepo: remove all external users of localrepo.opener This change touches every module in which repository.opener was being used, and changes it for the equivalent repository.vfs. This is meant to make it easier to split the repository.vfs into several separate vfs. It should now be possible to remove localrepo.opener.
Wed, 14 Jan 2015 20:29:47 -0800 log: use namespace logname and colorname
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Jan 2015 20:29:47 -0800] rev 23876
log: use namespace logname and colorname Now that we have the machinary to change the log name and the color label used, let's use that. Tests have been updated accordingly.
Wed, 14 Jan 2015 20:11:02 -0800 namespaces: add colorname member to namespace object
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Jan 2015 20:11:02 -0800] rev 23875
namespaces: add colorname member to namespace object Previously, there was no way to change the color label used for 'hg log' output. This patch just adds the member to the object, a future patch will change 'hg log' to use this.
Wed, 14 Jan 2015 20:06:44 -0800 namespaces: add logname member to namespace object
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Jan 2015 20:06:44 -0800] rev 23874
namespaces: add logname member to namespace object Previously, there was no way to change the name used for 'hg log' output. This was inconvenient for extensions that want a template name longer than 12 characters (e.g. remotebookmarks) but a different name for 'hg log'. This patch only adds the member to the object, a future patch will update the 'hg log' code.
Wed, 14 Jan 2015 19:55:20 -0800 namespaces: use named args for namespace api
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Jan 2015 19:55:20 -0800] rev 23873
namespaces: use named args for namespace api This is just a style change but makes adding new arguments more robust for callers.
Wed, 14 Jan 2015 19:39:13 -0800 namespaces: make the constructor into named args
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Jan 2015 19:39:13 -0800] rev 23872
namespaces: make the constructor into named args None of the arguments are truly optional but this makes adding future arguments more robust and perhaps optional.
Thu, 15 Jan 2015 20:36:03 -0800 dispatch: only check compatibility against major and minor versions (BC)
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jan 2015 20:36:03 -0800] rev 23871
dispatch: only check compatibility against major and minor versions (BC) Extensions can declare compatibility with Mercurial versions. If an error occurs, Mercurial will attempt to pin blame on an extension that isn't marked as compatible. While all bets are off when it comes to the internal API, my experience has shown that a monthly/patch release of Mercurial has never broken any of the extensions I've written. I think that expecting extensions to declare compatibility with every patch release of Mercurial is asking a bit much and adds little to no value. This patch changes the blame logic from exact version matching to only match on the major and minor Mercurial versions. This means that extensions only need to mark themselves as compatible with the major, quarterly releases and not the monthly ones in order to stay current and avoid what is almost certainly unfair blame. This will mean less work for extension authors and almost certainly fewer false positives in the blame attribution.
Thu, 15 Jan 2015 20:03:48 -0800 test-extension: use a realistic Mercurial version
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jan 2015 20:03:48 -0800] rev 23870
test-extension: use a realistic Mercurial version Mercurial doesn't define the 3rd "patch" version field for major releases. Don't use it in tests.
Thu, 15 Jan 2015 19:47:06 -0800 test-extension: improve test readability
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jan 2015 19:47:06 -0800] rev 23869
test-extension: improve test readability There was a mountain of text in this file that made reading the tests difficult. Inserting some line breaks greatly improves the situation.
Thu, 18 Dec 2014 19:14:01 -0800 bundle2: enforce parttype as alphanumerical
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Dec 2014 19:14:01 -0800] rev 23868
bundle2: enforce parttype as alphanumerical The binary format description has always stated that the parttype should be simple, but it was never really enforced. Recent discussions have convinced me we want to keep the part type simple and easy to debug. There is enough extensibility in the rest of the format.
Wed, 14 Jan 2015 22:40:39 -0500 tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com> [Wed, 14 Jan 2015 22:40:39 -0500] rev 23867
tests: conditionalize test-tools.t for Windows support I still get the following diff on Windows 7 with NTFS. I'm not sure if it is expected and we should wildcard the link count, or if something needs to be fixed. @@ -58,7 +58,7 @@ $ ln bar baz $ f bar -n baz -l --hexdump -t --sha1 --lines=9 -B 20 - bar: file, links=2, newer than baz, sha1=612ca68d0305c821750a + bar: file, links=0, newer than baz, sha1=612ca68d0305c821750a\r (esc) 0000: 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a 37 0a 38 0a |1.2.3.4.5.6.7.8.| 0010: 39 0a |9.|
Wed, 14 Jan 2015 01:15:26 +0100 dirstate: ignore negative debug.dirstate.delaywrite values - they crashed it
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 23866
dirstate: ignore negative debug.dirstate.delaywrite values - they crashed it Sleep can only travel forward in time, not back.
Wed, 14 Jan 2015 17:21:09 -0800 linkrev: use the right manifest content when adjusting linrev (issue4499)
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 14 Jan 2015 17:21:09 -0800] rev 23865
linkrev: use the right manifest content when adjusting linrev (issue4499) When the manifest revision is stored as a delta against a non-parent revision, '_adjustlinkrev' could miss some file update because it was using the delta only. We now use the 'fastread' method that uses the delta only when it makes sense. A test showcasing on the of possible issue have been added.
Wed, 14 Jan 2015 16:57:00 -0800 unpacker: fix missing arg for py2.4
Matt Mackall <mpm@selenic.com> [Wed, 14 Jan 2015 16:57:00 -0800] rev 23864
unpacker: fix missing arg for py2.4
Wed, 14 Jan 2015 01:15:26 +0100 branchcache: make _rbcrevslen handling more safe
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 23863
branchcache: make _rbcrevslen handling more safe self._rbcrevslen is used to keep track of the number of good records on disk. It should thus not be updated before the records actually have been written to disk.
Wed, 14 Jan 2015 01:15:26 +0100 branchcache: add debug output whenever cache files use truncate
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 23862
branchcache: add debug output whenever cache files use truncate The cache files are usually append only but will automatically be truncated and recover in exceptional situations. Add a debug notice when such exceptional situations are encountered.
Wed, 14 Jan 2015 01:15:26 +0100 tests: rework revision branch cache tests
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 23861
tests: rework revision branch cache tests The tests that were added with the revision branch cache in 678f53865c68 had suffered from bit rot in the development iterations. They were no longer that "good". Now, the tests are rewritten and reworked to be more readable and maintainable and relevant for the actual implementation. This also utilizes the new 'f' helper tool for keeping an eye the cache files.
Wed, 14 Jan 2015 01:15:26 +0100 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 23860
tests: add 'f' tool for cross platform file operations in the tests This tool is like the collection of tools found in a unix environment but are cross platform and stable and suitable for our needs in the test suite. The main reason it is "needed" now is for hexdump of revision branch cache to keep an eye on how it changes and make sure the format is stable. It is a very generic tool that can end up being used a lot in tests, so I gave it very generic name.
Wed, 14 Jan 2015 01:15:26 +0100 run-tests: include testdir in $PATH so tests easily can use helper tools
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 23859
run-tests: include testdir in $PATH so tests easily can use helper tools The testdir is already added to $PYTHONPATH - I think it makes sense and is convenient to add it to $PATH too. The following binaries are invoked from tests using full path with $TESTDIR/ - they can now be used without specifying path: dumbhttp.py dummyssh filterpyflakes.py generate-working-copy-states.py get-with-headers.py hghave histedit-helpers.sh killdaemons.py md5sum.py notcapable printenv.py readlink.py revlog-formatv0.py run-tests.py svn-safe-append.py svnxml.py tinyproxy.py
Mon, 12 Jan 2015 15:29:36 -0500 filelog: use censored revlog flag bit to quickly check if a node is censored
Mike Edgar <adgar@google.com> [Mon, 12 Jan 2015 15:29:36 -0500] rev 23858
filelog: use censored revlog flag bit to quickly check if a node is censored
Mon, 12 Jan 2015 14:41:25 -0500 revlog: verify censored flag when hashing added revision fulltext
Mike Edgar <adgar@google.com> [Mon, 12 Jan 2015 14:41:25 -0500] rev 23857
revlog: verify censored flag when hashing added revision fulltext When receiving a delta via exchange, three possible storage outcomes emerge: 1. The delta is added directly to the revlog. ("fast-path") 2. A freshly-computed delta with a different base is stored. 3. The new revision's fulltext is computed and stored outright. Both (2) and (3) require materializing the full text of the new revision by applying the delta to its base. This is typically followed by a hash check. The new flags argument allows callers to _addrevision to signal that they expect that hash check to fail. We can use this opportunity to verify that expectation. If the hash fails, require the flag be set; if the hash passes, require the flag be unset. Rather than simply eliding the hash check, this approach provides some assurance that the censored flag is not applied to valid revisions. Read more at: http://mercurial.selenic.com/wiki/CensorPlan
Mon, 12 Jan 2015 14:30:24 -0500 revlog: add flags argument to _addrevision, update callers use default flags
Mike Edgar <adgar@google.com> [Mon, 12 Jan 2015 14:30:24 -0500] rev 23856
revlog: add flags argument to _addrevision, update callers use default flags For revlog index flags to be useful to other parts of Mercurial, they need to be settable when writing revisions. The current use case for revlog index flags is the censorship feature: http://mercurial.selenic.com/wiki/CensorPlan While the censor flag could be inferred in _addrevision by interrogating the text/delta being added, that would bury the censorship logic and inappropriately couple it to all revision creation.
Mon, 12 Jan 2015 14:01:52 -0500 revlog: define censored flag for revlogng index
Mike Edgar <adgar@google.com> [Mon, 12 Jan 2015 14:01:52 -0500] rev 23855
revlog: define censored flag for revlogng index This flag bit will be used to cheaply signal censorship presence to upper layers (exchange, verify). It indicates that censorship metadata is present but does not attest to the verifiability of that metadata. For the censorship design, see: http://mercurial.selenic.com/wiki/CensorPlan
Sun, 11 Jan 2015 01:32:36 +0100 localrepo: remove all internal uses of localrepo.wopener
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 11 Jan 2015 01:32:36 +0100] rev 23854
localrepo: remove all internal uses of localrepo.wopener It has been replaced with localrepo.wvfs.
Sun, 11 Jan 2015 00:21:58 +0100 localrepo: remove all internal uses of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 11 Jan 2015 00:21:58 +0100] rev 23853
localrepo: remove all internal uses of localrepo.sopener It has been replaced with localrepo.svfs.
Sat, 10 Jan 2015 23:02:52 +0100 localrepo: remove all internal uses of localrepo.opener
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 10 Jan 2015 23:02:52 +0100] rev 23852
localrepo: remove all internal uses of localrepo.opener It has been replaced with localrepo.vfs. In the future we may split the vfs into different vfs objects to access different elements of the repository.
Wed, 14 Jan 2015 15:46:21 -0500 sslutil: drop defunct ssl version constants
Augie Fackler <augie@google.com> [Wed, 14 Jan 2015 15:46:21 -0500] rev 23851
sslutil: drop defunct ssl version constants Nobody outside sslutil should be using these constants anyway.
Wed, 14 Jan 2015 15:46:00 -0500 sslutil: use saner TLS settings on Python 2.7.9
Augie Fackler <augie@google.com> [Wed, 14 Jan 2015 15:46:00 -0500] rev 23850
sslutil: use saner TLS settings on Python 2.7.9 Asking for TLSv1 locks us out of TLSv1_2 etc. This is at least less bad. Ideally we'd use ssl.create_default_context(), but that causes more mayhem in the testsuite than I really want to deal with right now.
Wed, 14 Jan 2015 15:31:16 -0500 sslutil: drop support for clients of sslutil specifying a TLS version
Augie Fackler <augie@google.com> [Wed, 14 Jan 2015 15:31:16 -0500] rev 23849
sslutil: drop support for clients of sslutil specifying a TLS version We really just want to support the newest thing possible, so we may as well consolidate that knowledge into this module. Right now this doesn't change any behavior, but a future change will fix the defaults for Python 2.7.9 so we can use slightly better defaults there (which is the only place it's possible at the moment.)
Wed, 07 Jan 2015 00:07:29 -0800 discovery: run discovery on filtered repository
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 00:07:29 -0800] rev 23848
discovery: run discovery on filtered repository We have been running discovery on unfiltered repository for quite some time. This was aimed at two things: - save some bandwith by prevent the repushing of common but hidden changesets - allow phases changes on secret/hidden changeset on bare push. The cost of this unfiltered discovery combined with evolution is actually really high. Evolution likely create thousand of hidden heads, and the discovery is going to try to discovery if each of them are common or not. For example, pushing from my development mercurial repository implies 17 discovery round-trip. The benefit are rare corner cases while the drawback are massive. So we run the discovery on a filtered repository again. We add some hack to detect remote heads that are known locally and adds them to the common set anyway, so the good behavior of most of the corner case should remains. But this will not work in all cases. This bring my discovery phase back from 17 round-trips to 1 or 2.
Sat, 10 Jan 2015 23:18:11 +0900 revset: check for collisions between alias argument names in the declaration
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 10 Jan 2015 23:18:11 +0900] rev 23847
revset: check for collisions between alias argument names in the declaration Before this patch, collisions between alias argument names in the declaration are ignored, and this silently causes unexpected alias evaluation. This patch checks for such collisions, and aborts (or shows a warning) when collisions are detected. This patch doesn't add a test to "test-revset.t", because a doctest is enough to test the collisions detection itself.
Sat, 10 Jan 2015 23:18:11 +0900 revset: parse alias declaration strictly by _parsealiasdecl
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 10 Jan 2015 23:18:11 +0900] rev 23846
revset: parse alias declaration strictly by _parsealiasdecl Before this patch, alias declaration is parsed by string base operations: matching against "^([^(]+)\(([^)]+)\)$" and splitting by ",". This overlooks many syntax errors like below (see the previous patch introducing "_parsealiasdecl" for detail): - un-closed parenthesis causes being treated as "alias symbol" - symbol/function name aren't examined whether they are valid or not - invalid argument list causes unexpected argument names To parse alias declaration strictly, this patch replaces parsing implementation by "_parsealiasdecl". This patch tests only one typical declaration error case, because error detection itself is already tested in the doctest of "_parsealiasdecl". This also removes class property "args" and "error", because these are certainly initialized in "revsetalias.__init__".
Sat, 10 Jan 2015 23:18:11 +0900 revset: introduce "_parsealiasdecl" to parse alias declarations strictly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 10 Jan 2015 23:18:11 +0900] rev 23845
revset: introduce "_parsealiasdecl" to parse alias declarations strictly This patch introduces "_parsealiasdecl" to parse alias declarations strictly. For example, "_parsealiasdecl" can detect problems below, which current implementation can't. - un-closed parenthesis causes being treated as "alias symbol" because all of declarations not in "func(....)" style are recognized as "alias symbol". for example, "foo($1, $2" is treated as the alias symbol. - alias symbol/function names aren't examined whether they are valid as symbol or not for example, "foo bar" can be treated as the alias symbol, but of course such invalid symbol can't be referred in revset. - just splitting argument list by "," causes overlooking syntax problems in the declaration for example, all of invalid declarations below are overlooked: - foo("bar") => taking one argument named as '"bar"' - foo("unclosed) => taking one argument named as '"unclosed' - foo(bar::baz) => taking one argument named as 'bar::baz' - foo(bar($1)) => taking one argument named as 'bar($1)' To decrease complication of patch, current implementation for alias declarations is replaced by "_parsealiasdecl" in the subsequent patch. This patch just introduces it. This patch defines "_parsealiasdecl" not as a method of "revsetalias" class but as a one of "revset" module, because of ease of testing by doctest. This patch factors some helper functions for "tree" out, because: - direct accessing like "if tree[0] == 'func' and len(tree) > 1" decreases readability - subsequent patch (and also existing code paths, in the future) can use them for readability This patch also factors "_tokenizealias" out, because it can be used also for parsing alias definitions strictly.
Sat, 10 Jan 2015 23:18:11 +0900 revset: store full detail into revsetalias.error for error source distinction
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 10 Jan 2015 23:18:11 +0900] rev 23844
revset: store full detail into revsetalias.error for error source distinction Before this patch, any errors in the declaration of revset alias aren't detected at all, and there is no information about error source in the error message. As a part of preparation for parsing alias declarations and definitions more strictly, this patch stores full detail into "revsetalias.error" for error source distinction. This makes raising "Abort" and warning potential errors just use "revsetalias.error" without any message composing.
Sat, 10 Jan 2015 23:18:11 +0900 revset: factor out composing error message for ParseError to reuse
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 10 Jan 2015 23:18:11 +0900] rev 23843
revset: factor out composing error message for ParseError to reuse This patch defines the composing function not in "ParseError" class but in "revset" module, because: - "_()" shouldn't be used in "ParseError", to avoid adding "from i18n import _" i18n" to "error" module - generalizing message composition of"ParseError" for all code paths other than revset isn't the purpose of this patch we should also take care of showing "unexpected leading whitespace" for some code paths, to generalize widely.
Sat, 10 Jan 2015 23:18:11 +0900 revset: make tokenize extensible to parse alias declarations and definitions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 10 Jan 2015 23:18:11 +0900] rev 23842
revset: make tokenize extensible to parse alias declarations and definitions Before this patch, "tokenize" doesn't recognize the symbol starting with "$" as a valid one. This prevents revset alias declarations and definitions from being parsed with "tokenize", because "$" may be used as the initial letter of alias arguments. BTW, the alias argument name doesn't require leading "$" itself, in fact. But we have to assume that users may use "$" as the initial letter of argument names in their aliases, because examples in "hg help revsets" uses such names for a long time. To make "tokenize" extensible to parse alias declarations and definitions, this patch introduces optional arguments "syminitletters" and "symletters". Giving these sets can change the policy of "valid symbol" in tokenization easily. This patch keeps original examination of letter validity for reviewability, even though there is redundant interchanging between "chr"/"ord" at initialization of "_syminitletters" and "_symletters". At most 256 times examination (per initialization) is cheaper enough than revset evaluation itself. This patch is a part of preparation for parsing alias declarations and definitions more strictly.
Fri, 09 Jan 2015 18:38:02 +0100 largefiles: make linear update set unsure largefiles normal if unchanged
Mads Kiilerich <madski@unity3d.com> [Fri, 09 Jan 2015 18:38:02 +0100] rev 23841
largefiles: make linear update set unsure largefiles normal if unchanged 'hg update' would hash all 'unsure' largefiles before performing the merge. It would update the standins but not detect the very common case where the largefile never had been changed by the user but just had been marked with an invalid dirstate mtime to make sure any changes done by the user in the same second would be detected. The largefile would remain in that state and would have to be hashed again next time even though it still not had been changed. Sad trombone. Instead, for largefiles listed as 'unsure' or 'modified', after updating the standin with the actual hash, mark the largefile as normal if it turns out to not be modified relative to the revision in the parent revision. That will prevent it from being hashed again next time.
Fri, 09 Jan 2015 18:38:02 +0100 debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com> [Fri, 09 Jan 2015 18:38:02 +0100] rev 23840
debugdirstate: don't hide date field with --nodate, just show 'set'/'unset' The value of the dirstate date field cannot be used in tests and we thus have to use debugdirstate with --nodate. It is however still very helpful to be able to see whether the date field has been set or still is unset. The absence of that information made it hard to debug some largefile dirstate issues. This change _could_ make the test suite more unstable ... but that would be places where the test suite or the code should be made more stable. (Note: 'unset' with the magic negative sizes is reliable. 'unset' for normal sizes would probably not be reliable, but there is no such occurrences in the test suite and it should thus be reliable.) This output wastes more horizontal space in the --nodate output, but it also makes things simpler that the output format always is the same. It is just a debug command so let's keep it simple.
Fri, 09 Jan 2015 18:38:02 +0100 debugdirstate: simplify date handling after e7ed5d07cc4c used fixed format
Mads Kiilerich <madski@unity3d.com> [Fri, 09 Jan 2015 18:38:02 +0100] rev 23839
debugdirstate: simplify date handling after e7ed5d07cc4c used fixed format
Sun, 11 Jan 2015 23:25:23 -0500 forget: don't report rejected files as forgotten as well
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Jan 2015 23:25:23 -0500] rev 23838
forget: don't report rejected files as forgotten as well It seems like a mistake to report a file as forgotten and rejected. The forgotten list doesn't seem to be used by anything in core, so no test changes.
Sun, 11 Jan 2015 23:20:51 -0500 largefiles: enable subrepo support for forget
Matt Harbison <matt_harbison@yahoo.com> [Sun, 11 Jan 2015 23:20:51 -0500] rev 23837
largefiles: enable subrepo support for forget
Tue, 13 Jan 2015 15:07:08 -0800 namespaces: add revset for 'named(namespace)'
Sean Farley <sean.michael.farley@gmail.com> [Tue, 13 Jan 2015 15:07:08 -0800] rev 23836
namespaces: add revset for 'named(namespace)' This patch adds functionality for listing all changesets in a given namespace via the revset language.
Fri, 09 Jan 2015 10:52:14 -0800 bundles: do not overwrite existing backup bundles (BC)
Durham Goode <durham@fb.com> [Fri, 09 Jan 2015 10:52:14 -0800] rev 23835
bundles: do not overwrite existing backup bundles (BC) Previously, a backup bundle could overwrite an existing bundle and cause user data loss. For instance, if you have A<-B<-C and strip B, it produces backup bundle B-backup.hg. If you then hg pull -r B B-backup.hg and strip it again, it overwrites the existing B-backup.hg and C is lost. The fix is to add a hash of all the nodes inside that bundle to the filename. Fixed up existing tests and added a new test in test-strip.t
Mon, 12 Jan 2015 18:01:20 -0700 https: support tls sni (server name indication) for https urls (issue3090)
Alex Orange <crazycasta@gmail.com> [Mon, 12 Jan 2015 18:01:20 -0700] rev 23834
https: support tls sni (server name indication) for https urls (issue3090) SNI is a common way of sharing servers across multiple domains using separate SSL certificates. As of Python 2.7.9 SSLContext has been backported from Python 3. This patch changes sslutil's ssl_wrap_socket to use SSLContext and take a server hostname as and argument. It also changes the url module to make use of this argument. The new code for 2.7.9 achieves it's task by attempting to get the SSLContext object from the ssl module. If this fails the try/except goes back to what was there before with the exception that the ssl_wrap_socket functions take a server_hostname argument that doesn't get used. Assuming the SSLContext exists, the arguments to wrap_socket at the module level are emulated on the SSLContext. The SSLContext is initialized with the specified ssl_version. If certfile is not None load_cert_chain is called with certfile and keyfile. keyfile being None is not a problem, load_cert_chain will simply expect the private key to be in the certificate file. verify_mode is set to cert_reqs. If ca_certs is not None load_verify_locations is called with ca_certs as the cafile. Finally the wrap_socket method of the SSLContext is called with the socket and server hostname. Finally, this fails test-check-commit-hg.t because the "new" function ssl_wrap_socket has underscores in its names and underscores in its arguments. All the underscore identifiers are taken from the other functions and as such can't be changed to match naming conventions.
(0) -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 tip