Tue, 23 Dec 2014 10:41:45 -0800 trydiff: use sets, not lists, for containment checks
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 Dec 2014 10:41:45 -0800] rev 23661
trydiff: use sets, not lists, for containment checks This only has a noticeable effect on diffs touching A LOT of files. For example, it takes hg diff -r FIREFOX_AURORA_30_BASE -r FIREFOX_AURORA_35_BASE from 1m55.465s to 1m32.354s. That diff has over 50k files.
Wed, 24 Dec 2014 13:33:01 -0600 largefiles: fix unused import
Matt Mackall <mpm@selenic.com> [Wed, 24 Dec 2014 13:33:01 -0600] rev 23660
largefiles: fix unused import Caught by pyflakes.
Sun, 07 Dec 2014 01:32:30 -0500 largefiles: look at unfiltered().lfstatus to allow status() to be filtered
Matt Harbison <matt_harbison@yahoo.com> [Sun, 07 Dec 2014 01:32:30 -0500] rev 23659
largefiles: look at unfiltered().lfstatus to allow status() to be filtered The comment about status being buggy with a repo proxy seems to be that status wasn't being redirected to testing the largefiles themselves- lfstatus was always False, and so the original status method was being called instead of doing the largefiles processing. This is because when the various largefile command overrides call 'repo.lfstatus = True', __setattr__() in repoview is in turn setting the value on the unfiltered repo, and the value in the filtered repo remains False. Explicitly looking at the attribute on the unfiltered repo keeps all views in sync.
Fri, 28 Nov 2014 14:21:02 -0500 largefiles: eliminate a duplicate message when removing files in verbose mode
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Nov 2014 14:21:02 -0500] rev 23658
largefiles: eliminate a duplicate message when removing files in verbose mode There is no --after for addremove, so the printing for addremove can be hoisted out of the 'not after' check. The difference between the two remove messages reflects the existing difference between core remove and core addremove styles for printing the file. There are still some pre-existing issues here. Core addremove only prints on inexact matches or when verbose. But since the largefiles that are being removed are passed to removelargefiles() as a pattern list, there is never an inexact match, which would keep the largefiles from being printed at all unless verbose is specified. Therefore, the output is a little more aggressive than core. The addremove print style here is also inconsistent with core- it should use matcher.uipath(f) instead of f. These can be fixed once a matcher is passed in.
Wed, 17 Dec 2014 21:51:09 -0500 largefiles: ensure that the standin files are available in getlfilestoupload()
Matt Harbison <matt_harbison@yahoo.com> [Wed, 17 Dec 2014 21:51:09 -0500] rev 23657
largefiles: ensure that the standin files are available in getlfilestoupload() The function only adds the hash content of the file to the set to upload if the file in the ctx is a standin. It is called by overrides.summaryremotehook(), which is called in the summary method. The largefiles extension switches 'lfstatus' on in summary, so the standins shouldn't be visible when obtaining a context there. The reason this wasn't noticed before is that the 'lfstatus' attribute is only being set on the unfiltered repo because of how repoview delegates attribute assignment. Therefore any filtered view will return a context containing standins, whether or not 'lfstatus' was set in the various overrides methods. That will be fixed in the next patch. But without this change, the next patch would have test failures for 'summary --large' stating there are no files to upload.
Thu, 18 Dec 2014 09:22:09 -0800 merge: move checking of unknown files out of manifestmerge()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 Dec 2014 09:22:09 -0800] rev 23656
merge: move checking of unknown files out of manifestmerge() This moves most reading of filelogs out of manifestmerge, making it easy for a narrow clone extension to filter out or translate unwanted actions before any filelogs are read. The only call left is inside of copies.mergecopies(), which can be overridden separately at a lower level.
Sat, 13 Dec 2014 23:52:22 -0800 merge: extract method for checking for conflicting untracked file
Martin von Zweigbergk <martinvonz@google.com> [Sat, 13 Dec 2014 23:52:22 -0800] rev 23655
merge: extract method for checking for conflicting untracked file Now that the functionality is collected in one place, let's extract it to a method.
Mon, 15 Dec 2014 16:45:19 -0800 merge: create 'cm' action for 'get or merge' case
Martin von Zweigbergk <martinvonz@google.com> [Mon, 15 Dec 2014 16:45:19 -0800] rev 23654
merge: create 'cm' action for 'get or merge' case We still have one case of a call to _checkunknownfile() in manifestmerge(): when force=True and branchmerge=True and the remote side has a file that the local side doesn't. This combination of arguments is used by 'hg merge --force', but also by rebase and unshelve. In this scenario, we try to create the file from the contents from the remote, but if there is already a local untracked file in place, we merge it instead.
Fri, 12 Dec 2014 23:18:36 -0800 merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Dec 2014 23:18:36 -0800] rev 23653
merge: don't overwrite untracked file at directory rename target When a directory was renamed and a new untracked file was added in the new directory and the remote directory added a file by the same name in the old directory, the local untracked file gets overwritten, as demonstrated by the broken test case in test-rename-dir-merge. Fix by checking for unknown files for 'dg' actions too. Since _checkunknownfile() currently expects the same filename in both contexts, we need to add a new parameter for the remote filename to it.
Tue, 18 Nov 2014 20:29:25 -0800 merge: remove constant tuple element from 'aborts'
Martin von Zweigbergk <martinvonz@google.com> [Tue, 18 Nov 2014 20:29:25 -0800] rev 23652
merge: remove constant tuple element from 'aborts' The second element of the tuples in the 'aborts' list is always 'ud', so let's remove it.
Wed, 19 Nov 2014 11:51:31 -0800 merge: collect checking for unknown files at end of manifestmerge()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Nov 2014 11:51:31 -0800] rev 23651
merge: collect checking for unknown files at end of manifestmerge() The 'c' and 'dc' actions include creating a file on disk and we need to check that no conflicting file exists unless force=True. Move two of the calls to _checkunknownfile() to a single place at the end of manifestmerge(). This removes some of the reading of filelogs from the heart of manifestmerge() and collects it in one place close to where its output (entries in the 'aborts' list) is used. Note that this removes the unnecessary call to _checkunknownfile() when force=True in one of the code paths.
Wed, 19 Nov 2014 11:48:30 -0800 merge: introduce 'c' action like 'g', but with additional safety
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Nov 2014 11:48:30 -0800] rev 23650
merge: introduce 'c' action like 'g', but with additional safety _checkunknownfile() reads the filelog of the remote side's file. For narrow clones, the filelog will not exist for all files and we need a way to avoid reading them. While it would be easier for the narrow extension to just override _checkunknownfile() and make it ignore files outside the narrow clone, it seems cleaner to have manifestmerge() not care about filelogs (considering its name). In order to move the calls to _checkunknownfile() out, we need to be able to tell in which cases we should check for unknown files. Let's start by introducing a new action distinct from 'g' for this purpose. Specifically, the new action will be just like 'g' except that it will check that for conflicting unknown files first. For now, just add the new action type and convert it to 'g'.
Wed, 19 Nov 2014 11:44:00 -0800 merge: structure 'remote created' code to match table
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Nov 2014 11:44:00 -0800] rev 23649
merge: structure 'remote created' code to match table This does duplicate the call to _checkunknownfile(), but it will simplify future patches.
Mon, 22 Dec 2014 15:48:39 -0800 pushkey: run hook after the lock release
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 22 Dec 2014 15:48:39 -0800] rev 23648
pushkey: run hook after the lock release The pushkey operation used to be in its own wireprotocol command and (in practice) always be lock free when running the hook. With bundle2, it happen in a greater scheme and a hook running locking command would get stuck. We now run such hooks after the lock release as similar hook do. Bundle2 test are altered to ensure we are lockfree at hook running time.
Fri, 12 Dec 2014 15:31:28 -0800 setup: use changes since latest tag instead of just distance
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Dec 2014 15:31:28 -0800] rev 23647
setup: use changes since latest tag instead of just distance For a Mercurial built on the merge from stable into default right after 3.2.2 was released -- 19ebd2f88fc7 -- the version number produced was "3.2.2+4". This is potentially misleading, since in reality the built Mercurial includes many more changes compared to 3.2.2. Change the versioning scheme so that we take into consideration all the changes present in the current revision that aren't present in the latest tag. For 19ebd2f88fc7 the new versioning scheme results in a version number of "3.2.2+256". This gives users a much better idea of how many changes have actually happened since the latest release. Since changessincelatesttag is always greater than or equal to the latesttagdistance, this will produce version numbers that are always greater than or equal to the old scheme. Thus there's minimal compatibility risk.
Fri, 12 Dec 2014 15:29:39 -0800 setup: use changessincelatesttag from archive if present
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Dec 2014 15:29:39 -0800] rev 23646
setup: use changessincelatesttag from archive if present changessincelatesttag gives one a better idea of how much the code has changed since. Since changessincelatesttag is always greater than or equal to the latesttagdistance (see previous patch for why), this will always produce version numbers greater than or equal to the previous scheme.
Fri, 12 Dec 2014 15:27:13 -0800 archive: store number of changes since latest tag as well
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Dec 2014 15:27:13 -0800] rev 23645
archive: store number of changes since latest tag as well This is different from latesttagdistance in that while latesttagdistance is defined to be the length of the longest path to the latest tag, changessincelatesttag is the number of changes contained in @ that aren't contained in the latest tag. So, if 't' is the latest tag in the repository below: t | v --o--o----o \ \ ..o..o..@ then latesttagdistance is 2, but changessincelatesttag is 4. Note that changessincelatesttag is always greater than or equal to the latesttagdistance -- that's because changessincelatesttag counts all the changes in the longest path since the latest tag, and possibly others. This is an important fact that we'll take advantage of in upcoming patches.
Mon, 22 Dec 2014 17:26:21 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 22 Dec 2014 17:26:21 -0600] rev 23644
merge with stable
Mon, 22 Dec 2014 17:27:31 -0500 demandimport: blacklist distutils.msvc9compiler (issue4475) stable
Augie Fackler <raf@durin42.com> [Mon, 22 Dec 2014 17:27:31 -0500] rev 23643
demandimport: blacklist distutils.msvc9compiler (issue4475) This module depends on _winreg, which is windows-only. Recent versions of setuptools load distutils.msvc9compiler and expect it to ImportError immediately when on non-Windows platforms, so we need to let them do that. This breaks in an especially mystifying way, because setuptools uses vars() on the imported module. We then throw an exception, which vars doesn't pick up on well. For example: In [3]: class wat(object): ...: @property ...: def __dict__(self): ...: assert False ...: In [4]: vars(wat()) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-4-2781ada5ffe6> in <module>() ----> 1 vars(wat()) TypeError: vars() argument must have __dict__ attribute Which is similar to the problem we run into.
Thu, 11 Dec 2014 22:51:29 -0800 largefiles: don't duplicate 'actions' into 'actionbyfile'
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Dec 2014 22:51:29 -0800] rev 23642
largefiles: don't duplicate 'actions' into 'actionbyfile'
Thu, 11 Dec 2014 22:07:41 -0800 merge: make calculateupdates() return file->action dict
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Dec 2014 22:07:41 -0800] rev 23641
merge: make calculateupdates() return file->action dict This simplifies largefiles' overridecalculateupdates(), which no longer has to do the conversion it started doing in 38e55e55ae4d (largefiles: rewrite merge code using dictionary with entry per file, 2014-12-09). To keep this patch small, we'll leave the name 'actionbyfile' in overrides.py. It will be renamed in the next patch.
Thu, 11 Dec 2014 21:58:49 -0800 merge: let _forgetremoved() work on the file->action dict
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Dec 2014 21:58:49 -0800] rev 23640
merge: let _forgetremoved() work on the file->action dict By moving the conversion from the file->action dict after _forgetremoved(), we make that method shorter by removing the need for the confusing 'xactions' variable.
Thu, 11 Dec 2014 21:06:16 -0800 merge: let _resolvetrivial() work on the file->action dict
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Dec 2014 21:06:16 -0800] rev 23639
merge: let _resolvetrivial() work on the file->action dict By moving the conversion from the file->action dict after _resolvetrivial(), we greatly simplify and clarify that method.
Thu, 11 Dec 2014 20:56:53 -0800 merge: let bid merge work on the file->action dict
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Dec 2014 20:56:53 -0800] rev 23638
merge: let bid merge work on the file->action dict By moving the conversion from the file->action dict after the bid merge code, bid merge can be simplified a little. A few tests are affected by this change. Where we used to iterate over the actions first in order of the action type ('g', 'r', etc.) [1], we now iterate in order of filename. This difference affects the order of debug log statements. [1] And then in the non-deterministic order of files in the manifest dictionary (the order returned from manifest.diff()).
Mon, 08 Dec 2014 13:24:10 -0800 merge: write manifestmerge() using dictionary with entry per file
Martin von Zweigbergk <martinvonz@google.com> [Mon, 08 Dec 2014 13:24:10 -0800] rev 23637
merge: write manifestmerge() using dictionary with entry per file In the same vein as 38e55e55ae4d (largefiles: rewrite merge code using dictionary with entry per file, 2014-12-09), rewrite manifestmerge() itself as dictionary with the filename as key. This will let us simplify some of the other code in merge.py and eventually drop the conversion in the largefiles code. No difference in speed could be detected (well within the noise level when run in Mozilla repo).
Wed, 17 Dec 2014 12:21:07 -0800 repoview: backout ced3ecfc2e57
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Dec 2014 12:21:07 -0800] rev 23636
repoview: backout ced3ecfc2e57 Monkey patching repoview does not really work and making it really work will be really hard. So we better have it broken without complexity than broken with extra complexity.
Wed, 17 Dec 2014 12:19:33 -0800 largefile: explain why no monkey patching on a repoview
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Dec 2014 12:19:33 -0800] rev 23635
largefile: explain why no monkey patching on a repoview The comment requested for investigations, here they are.
Wed, 17 Dec 2014 12:10:16 -0800 largefile: backout ca54fb3d71ce
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Dec 2014 12:10:16 -0800] rev 23634
largefile: backout ca54fb3d71ce The hack for method monkey patching on repoview has been ruled out as fragile, so we are rolling it back. We'll expand the explanation in the next changeset.
Thu, 18 Dec 2014 12:33:17 -0800 incoming: handle phases the same as pull
Eric Sumner <ericsumner@fb.com> [Thu, 18 Dec 2014 12:33:17 -0800] rev 23633
incoming: handle phases the same as pull Now that bundlerepo can move phases safely, 'hg incoming' can share its phase handling code with pull to better reflect what would actually show up.
Thu, 18 Dec 2014 12:22:43 -0800 bundlerepo: retract phase boundary
Eric Sumner <ericsumner@fb.com> [Thu, 18 Dec 2014 12:22:43 -0800] rev 23632
bundlerepo: retract phase boundary This patch makes bundrepo retract the phase boundary for new commits to 'draft' status, which is consistent with the behavior of 'hg unbundle'. The old behavior was for commits to appear with the same phase as their nearest ancestor in the base repository. This affects several classes of operation: * Inspecting a bundle with the -B flag * Treating a bundle file as a peer (old: everything public, new: everything draft) * Incoming command (neither old or new behavior is sensible -- fixed in next patch)
Thu, 18 Dec 2014 11:38:48 -0800 bundlerepo: implement safe phasecache
Eric Sumner <ericsumner@fb.com> [Thu, 18 Dec 2014 11:38:48 -0800] rev 23631
bundlerepo: implement safe phasecache This patch makes bundlerepo use a subclass of phasecache that will allow phase boundaries to be moved around, but will never write them to the underlying repository.
Thu, 18 Dec 2014 11:30:10 -0800 localrepo.__getitem__: add slicing support
Eric Sumner <ericsumner@fb.com> [Thu, 18 Dec 2014 11:30:10 -0800] rev 23630
localrepo.__getitem__: add slicing support This allows the python slice syntax to be used with revision numbers when indexing into a repository, such as repo[8:]
Tue, 16 Dec 2014 14:34:53 -0800 ignore: resolve ignore files relative to repo root (issue4473) (BC)
Siddharth Agarwal <sid0@fb.com> [Tue, 16 Dec 2014 14:34:53 -0800] rev 23629
ignore: resolve ignore files relative to repo root (issue4473) (BC) Previously these would be considered to be relative to the current working directory. That behavior is both undocumented and doesn't really make sense. There are two reasonable options for how to resolve relative paths: - relative to the repo root - relative to the config file Resolving these files relative to the repo root matches existing behavior with hooks. An earlier discussion about this is available at http://mercurial.markmail.org/thread/tvu7yhzsiywgkjzl. Thanks to Isaac Jurado <diptongo@gmail.com> for the initial patchset that spurred the discussion.
Wed, 17 Dec 2014 18:53:38 -0800 test-hgignore: add testing for ui.ignore
Siddharth Agarwal <sid0@fb.com> [Wed, 17 Dec 2014 18:53:38 -0800] rev 23628
test-hgignore: add testing for ui.ignore I couldn't find any tests for this, and we're going to make changes here in upcoming patches.
Wed, 10 Dec 2014 22:09:46 -0500 tests: add missing globs for Windows
Matt Harbison <matt_harbison@yahoo.com> [Wed, 10 Dec 2014 22:09:46 -0500] rev 23627
tests: add missing globs for Windows I couldn't figure out how to glob the first chunk for Windows, so it's been conditionalized.
Thu, 18 Dec 2014 23:24:17 -0500 share: use the 'sharedpath' attr on repo instead of reloading from the file
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Dec 2014 23:24:17 -0500] rev 23626
share: use the 'sharedpath' attr on repo instead of reloading from the file Seems like a useful optimization, and now the exact file content is not a concern.
Thu, 18 Dec 2014 23:16:37 -0500 share: fix source repo lookup on Windows
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Dec 2014 23:16:37 -0500] rev 23625
share: fix source repo lookup on Windows The stored path contains platform specific separators, so splitting on '/.hg' returned the string unmodified on Windows. The source was then looked for in $source/.hg/.hg, which obviously fails. This caused cascading errors in test-share.t relating to the recent bookmark support.
Mon, 22 Dec 2014 03:20:50 +0100 help: suggest '-v -e' to get built-in aliases for extensions (issue4461)
Chingis Dugarzhapov <chingis.dug@gmail.com> [Mon, 22 Dec 2014 03:20:50 +0100] rev 23624
help: suggest '-v -e' to get built-in aliases for extensions (issue4461) If extension name matches one of command names, suggest user to type 'hg help -v -e <extension>' to get full list of built-in aliases
Thu, 18 Dec 2014 10:11:38 -0800 test-check-commit-hg: clarify misleading "commit message rules" error
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 Dec 2014 10:11:38 -0800] rev 23623
test-check-commit-hg: clarify misleading "commit message rules" error The test case doesn't only check the commit message, but also the patch, which can result in confusing output like + Revision df6f06d17100 does not comply to commit message rules + ------------------------------------------------------ + 32: adds double empty line + + even when there are no double blank lines in the commit message. Drop the "commit message" part to make it less confusing.
Sun, 21 Dec 2014 13:02:59 +0000 keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net> [Sun, 21 Dec 2014 13:02:59 +0000] rev 23622
keyword: handle resolve to either parent Merged files are considered modified at commit time even if only 1 parent differs. In this case we must use the change context of this parent for expansion. The issue went unnoticed for long because it is only apparent until the next update to the merge revision - except in test-keyword where it was always staring us in the face.
Sun, 21 Dec 2014 12:53:57 +0000 keyword: update test file syntax
Christian Ebert <blacktrash@gmx.net> [Sun, 21 Dec 2014 12:53:57 +0000] rev 23621
keyword: update test file syntax
Mon, 22 Dec 2014 14:49:05 -0600 branches: deprecate -a
Matt Mackall <mpm@selenic.com> [Mon, 22 Dec 2014 14:49:05 -0600] rev 23620
branches: deprecate -a
Sun, 21 Dec 2014 15:06:54 -0500 largefiles: fix a spurious missing file warning with forget (issue4053) stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 21 Dec 2014 15:06:54 -0500] rev 23619
largefiles: fix a spurious missing file warning with forget (issue4053) If an uncommitted and deleted file was forgotten, a warning would be emitted, even though the operation was successful. See the previous patch for 'remove -A' for the exact circumstances, and details about the cause.
Sun, 21 Dec 2014 15:04:13 -0500 largefiles: fix a spurious missing file warning with 'remove -A' (issue4053) stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 21 Dec 2014 15:04:13 -0500] rev 23618
largefiles: fix a spurious missing file warning with 'remove -A' (issue4053) The bug report doesn't mention largefiles, but the given recipe doesn't fail unless the largefiles extension is loaded. The problem only affected normal files, whether or not any largefiles are committed, and only files that have not been committed yet. (Files with an 'a' state are dropped from dirstate, not marked removed.) Further, if the named normal file never existed, the warning would be printed out twice. The problem is that the core implementation of remove() calls repo.status(), which eventually triggers a dirstate.walk(). When the file isn't seen in the filesystem during the walk, the exception handling finds the file in dirstate, so it doesn't complain. However, the largefiles implementation called status() again with all of the original files (including the normal ones, just dropped). This time, the exception handler doesn't find the file in dirstate and does complain. This simply excludes the normal files from the second repo.status() call, which the largefiles extension has no interest is processing anyway.
Sun, 21 Dec 2014 14:42:46 -0500 largefiles: introduce the 'composelargefilematcher()' method stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 21 Dec 2014 14:42:46 -0500] rev 23617
largefiles: introduce the 'composelargefilematcher()' method This is a copy/paste (with the necessary tweaks) of the composenormalfilematcher method currently on default, which does the inverse- this trims the normal files out of the matcher. It will be used in the next patch.
Thu, 18 Dec 2014 09:37:14 -0800 context: return dirstate parents in workingctx.ancestors()
Durham Goode <durham@fb.com> [Thu, 18 Dec 2014 09:37:14 -0800] rev 23616
context: return dirstate parents in workingctx.ancestors() workingctx.ancestors() was not returning the dirstate parents as part of the result set. The only place this function is used is for copy detection when committing a file, and that code already checks the parents manually, so this change has no affect at the moment. I found it while playing around with changing how copy detection works.
Wed, 17 Dec 2014 17:26:12 -0800 backout: add --commit option
Mateusz Kwapich <mitrandir@fb.com> [Wed, 17 Dec 2014 17:26:12 -0800] rev 23615
backout: add --commit option Mercurial backout command makes a commmit by default only when the backed out revision is the parent of working directory and doesn't commit in any other case. The --commit option changes behaviour of backout to make a commit whenever possible (i.e. there is no unresolved conflicts). This behaviour seems more intuitive to many use (especially git users migrating to hg).
Sat, 13 Dec 2014 11:32:46 -0800 share: add option to share bookmarks
Ryan McElroy <rmcelroy@fb.com> [Sat, 13 Dec 2014 11:32:46 -0800] rev 23614
share: add option to share bookmarks This patch adds the -B/--bookmarks option to the share command added by the share extension. All it does for now is create a marker, 'bookmarks.shared', that will be used by future code to implement the sharing functionality.
Wed, 17 Dec 2014 13:25:24 -0600 highlight: ignore Unicode's extra linebreaks (issue4291)
Matt Mackall <mpm@selenic.com> [Wed, 17 Dec 2014 13:25:24 -0600] rev 23613
highlight: ignore Unicode's extra linebreaks (issue4291) Unicode and Python's unicode.splitlines() treat several extra legacy ASCII codepoints as linebreaks, even though the vast bulk of computing and Python's own str.splitlines() do not. Rather than introduce line numbering confusion, we filter them out when highlighting.
Thu, 18 Dec 2014 21:53:55 +0100 test: fix typo in test-help.t
André Sintzoff <andre.sintzoff@gmail.com> [Thu, 18 Dec 2014 21:53:55 +0100] rev 23612
test: fix typo in test-help.t
Mon, 15 Dec 2014 09:40:02 -0800 templatekw: remove unneeded showtags
Sean Farley <sean.michael.farley@gmail.com> [Mon, 15 Dec 2014 09:40:02 -0800] rev 23611
templatekw: remove unneeded showtags Now that we have the machinery of namespaces in-place, we use that instead of hand-rolling our own template function. Note, this can only be used for tags because both branches and bookmarks have special case logic for 'default' and the current bookmark (which is something outside the namespace api for now).
Thu, 16 Oct 2014 23:19:09 -0700 namespaces: generate template keyword when registering a namespace
Sean Farley <sean.michael.farley@gmail.com> [Thu, 16 Oct 2014 23:19:09 -0700] rev 23610
namespaces: generate template keyword when registering a namespace For any namespace, we generate a template keyword. For example, given a namespace 'babar', we automatically have the ability to use it in a template: hg log -r . -T '{babars % "King: {babar}\n"}' Furthermore, we only generate this keyword for a namespace if one doesn't already exist. This is necessary for 'branches' and 'bookmarks' since both of those have concepts of 'current' (something outside the namespace api) and also allows extensions to override default behavior if desired.
Sun, 14 Dec 2014 19:15:37 -0800 templatekw: add helper method to generate a template keyword for a namespace
Sean Farley <sean.michael.farley@gmail.com> [Sun, 14 Dec 2014 19:15:37 -0800] rev 23609
templatekw: add helper method to generate a template keyword for a namespace This marks our second feature of the namespace api: automatic template keyword. This patch adds a method that takes in a namespace and uses the node-to-name map to output the list of names.
Sun, 14 Dec 2014 18:54:50 -0800 namespaces: add names method to return list of names for a given node
Sean Farley <sean.michael.farley@gmail.com> [Sun, 14 Dec 2014 18:54:50 -0800] rev 23608
namespaces: add names method to return list of names for a given node In the previous patch, we added a node-to-name map property. This patch just exposes that interface to the api.
Mon, 15 Dec 2014 00:24:23 -0800 namespaces: add nodemap property
Sean Farley <sean.michael.farley@gmail.com> [Mon, 15 Dec 2014 00:24:23 -0800] rev 23607
namespaces: add nodemap property This patch adds a node-to-name map property to the namespace. This is necessary because we cannot simply invert the name-to-node map because we do not assume the name-to-node map to be unique (for example, consider named branches: many nodes have one branch name). The node-to-name is helpful in log commands where we are already iterating over a set of nodes and want to display some kind of naming information to the user.
Sun, 14 Dec 2014 19:12:27 -0800 namespaces: add method to get template name of namespace
Sean Farley <sean.michael.farley@gmail.com> [Sun, 14 Dec 2014 19:12:27 -0800] rev 23606
namespaces: add method to get template name of namespace This patch adds the public api for getting the template name of a namespace so that the next patch can use it to generate a template keyword automatically.
(0) -10000 -3000 -1000 -300 -100 -56 +56 +100 +300 +1000 +3000 +10000 tip