- Mar 24, 2017
-
-
Martin von Zweigbergk authored
-
Martin von Zweigbergk authored
This shows how rebase is currently broken with commands.rebase.requiredest=False.
-
- Mar 12, 2017
-
-
Durham Goode authored
Now that rebasestate is serialized as part of the transaction, the repo state it sees is the version at the end of the transaction, which may have hidden nodes. Therefore, it's possible parts of the rebase commit set are no longer visible by the time the transaction is closing, which causes a filtered revision error in this code. I don't think state serialization should be blocked from accessing commits it knows exist, especially if all it's trying to do is get the hex of them, so let's use an unfiltered repo here. Unfortunately, the only known repro is with the fbamend Facebook extension, so I'm not sure how to repro it in core Mercurial for a test.
-
- Mar 24, 2017
-
-
Katsunori FUJIWARA authored
There are some code paths, which apply standin() on same value multilpe times instead of using already standin()-ed value. "fstandin" is common name for "path to standin file" in lfutil.py, to avoid shadowing "standin()".
-
Katsunori FUJIWARA authored
There is only one user for the former, and repo.wjoin()-ed value is alread known by that user.
-
Katsunori FUJIWARA authored
readstandin() takes "node" argument to get changectx by "repo[node]". There are some readstandin() invocations, which use ctx.node(), ctx.rev(), or '.' as "node" argument above, even though corresponded changectx object is already looked up on caller side. This patch calls readstandin() with already known changectx itself, to avoid meaningless re-construction of changectx (indirect case via copytostore() is also included). BTW, copytostore() uses "rev" argument only for readstandin() invocation. Therefore, this patch also renames it to "revorctx" to indicate that it can take not only revision ID or so but also changectx, for readability.
-
Katsunori FUJIWARA authored
There are 3 splitstandin() invocations in updatestandin() for same "standin" value.
-
Katsunori FUJIWARA authored
If splitstandin()-ed str itself isn't used, isstandin() should be used instead of it, to omit meaningless str creation.
-
Katsunori FUJIWARA authored
There are many isstandin() invocations before splitstandin(). The former examines whether specified path starts with ".hglf/". The latter returns after ".hglf/" of specified path if it starts with that prefix, or returns None otherwise. Therefore, value returned by splitstandin() can be used for replacement of preceding isstandin(), and this replacement can omit redundant string comparison after isstandin().
-
Katsunori FUJIWARA authored
Since 650b5b6e75ed, filectxfn for memctx should return None for removed file instead of raising IOError.
-
- Mar 20, 2017
-
-
Augie Fackler authored
This prevents stray files from previous builds from polluting newer builds.
-
Augie Fackler authored
-
Augie Fackler authored
This actually fixes some tests that were showing us umask badness that had been overlooked.
-
- Mar 24, 2017
-
-
Martin von Zweigbergk authored
-
- Mar 19, 2017
-
-
Augie Fackler authored
We can't do a second commit in a repo yet, because pure-Python bdiff is broken on Python 3. That is probably a good next step.
-
- Mar 23, 2017
-
-
Augie Fackler authored
This changes one of the doctest results, but I'm pretty sure on inspection that it's an equivalent result.
-
Augie Fackler authored
-
- Mar 19, 2017
-
-
Augie Fackler authored
I'm about to change the implementation here and I'd like to add some doctests, which means this needs to not be hidden inside another function.
-
- Mar 23, 2017
-
-
Augie Fackler authored
-
- Mar 24, 2017
-
-
Jun Wu authored
This will ensure new extensions are consistent and `hg help -e` has a consistent output. I have to add a new group since the normal "pypats" will be filtered by "pyfilters", which will remove comments and docstrings.
-
Jun Wu authored
-
Jun Wu authored
See the previous patch for why.
-
Jun Wu authored
The first line of docstring is used in `hg help -e`. Use lowercase to be consistent with most extensions.
-
Jun Wu authored
Since we can now detect filesystems on FreeBSD and OSX. Add their major filesystems (ufs, zfs for FreeBSD; hfs for OSX) to the hardlink whitelist.
-
Jun Wu authored
-
Jun Wu authored
We want to use the `f_fstypename` field to get the filesystem type. Test it directly. The new macro HAVE_BSD_STATFS implys the old HAVE_SYS_MOUNT_H and HAVE_SYS_PARAM_H. So the latter ones are removed.
-
- Mar 23, 2017
- Mar 20, 2017
-
-
Matt Harbison authored
After 9335dc6b2a9c, with 'shell' being (mostly) set to False, invoking `more` no longer worked. Instead, a warning was printed and the pager was disabled. Invoking `more.com` works. Since a user may have configured 'pager.pager=more', do this substitution at the end. Surprisingly, `more` does allow for arguments, so those are preserved. This also allows `more` to work in MSYS. Setting 'shell=False' runs the executable via CreateProcess(), which has rather wonky rules for resolving an executable without an extension [1]. Resolving to *.com is not among them. Since 'shell=True' yields a cryptic error for a bad $PAGER, and a *.exe program will work without specifying the extension, sticking with current 'shell=False' seems like the right thing to do. I don't think there are any other *.com pagers out there, so this one special case seems OK. If somebody wants to do something crazy that requires cmd.exe, I was able to get normal paged output with 'pager.pager="cmd.exe /c more"'. I assume you can replace `more` with *.bat, *.vbs or various other creatures listed in $PATHEXT. [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
-
- Mar 22, 2017
-
-
Martin von Zweigbergk authored
The number of dashes under it needs to match exactly for it to be rendered as a heading. Without this change, the dashes end up on the same line as "commands", and "hg help config.commands" does not work.
-
David Soria Parra authored
Empty changelist descriptions are valid in Perforce. If we encounter one of them we are currently running into an IndexError. In case of empty commit messages set the commit message to **empty changelist description**, which follows Perforce terminology.
-
Martin von Zweigbergk authored
When the config is set to true, status output becomes relative to the working directory. This has bugged me since I started using hg and it turns it is sillily simple to support it (unless I missed something, of course). We could also add a --relative flag, but I would personally always want that on, and I haven't heard any use for having it sometimes on, so this patch only lets you enable it via config.
-
Martin von Zweigbergk authored
We only have commands.{update,rebase}.requiredest so far. We should clearly ignore those two if HGPLAIN is in effect, and it seems like we should ignore any future config that will be added in [commands] since that is about changing the behavior of commands. Thanks to Yuya for suggesting to centralize the code in ui.py. While at it, remove the unnecessary False values passed to ui.configbool() for the aforementioned config options.
-
- Mar 24, 2017
-
-
Gregory Szorc authored
Previously, the "oldheads" variable was a list. On a repository at Mozilla with 46,492 heads, profiling revealed that list membership testing was dominating execution time of applying small changegroups. This patch converts the list of old heads to a set. This makes membership testing significantly faster. On the aforementioned repository with 46,492 heads: $ hg unbundle <file with 1 changeset> before: 18.535s wall after: 1.303s Consumers of this variable only check for truthiness (`if oldheads`), length (`len(oldheads)`), and (most importantly) item membership (`h not in oldheads` - which occurs twice). So, the change to a set should be safe and suitable for stable. The practical effect of this change is that changegroup application and related operations (like `hg push`) no longer exhibit an O(n^2) CPU explosion as the number of heads grows.
-
- Mar 21, 2017
-
-
Pierre-Yves David authored
The checkheads function is long and complex, extract that logic in a subfunction is win in itself. As the comment in the code says, this postprocessing is currently very basic and either misbehave or fails to detect valid push in many cases. My deeper motive for this extraction is to be make it easier to provide extensive testing of this case and strategy to cover them. Final test and logic will makes it to core once done.
-
- Mar 22, 2017
-
-
Kostia Balytskyi authored
Python 2.6 unittest.TestCase does not have assertRaisesRegexp.
-
- Mar 23, 2017
-
-
Yuya Nishihara authored
We just need a hash table {fctx.data(): fctx} which doesn't keep fctx.data() in memory. Let's simply use hash(fctx.data()) to put data out from memory, and manage collided fctx objects by list. This isn't significantly faster than using sha1, but is more correct as we know SHA-1 collision attack is getting practical. Benchmark with 50k added/removed files, on tmpfs: $ hg addremove --dry-run --time -q previous: real 12.420 secs (user 11.120+0.000 sys 1.280+0.000) this patch: real 12.350 secs (user 11.210+0.000 sys 1.140+0.000)
-
Yuya Nishihara authored
It seems more natural. This makes the next patch slightly cleaner.
-
Yuya Nishihara authored
Benchmark with 50k added/removed files, on tmpfs: $ hg addremove --dry-run --time -q previous: real 16.070 secs (user 14.470+0.000 sys 1.580+0.000) this patch: real 12.420 secs (user 11.120+0.000 sys 1.280+0.000)
-