- Dec 13, 2022
-
-
Georges Racinet authored
Closes #114
-
Georges Racinet authored
It happens that error details contain Git wording that we replace by equivalent Mercurial, hoping it has no impact.
-
- Dec 12, 2022
-
-
Georges Racinet authored
One applied, the other ones discussed.
-
Georges Racinet authored
Related to heptapod#717 (was technically the place where it ended up in a crash)
-
Georges Racinet authored
-
Georges Racinet authored
While heptapod#717 is only about Markdown rendering (going through `ListCommitsByOid`, there were more cases where returning a working directory pseudo-commit was possible. This can never be appropriate. No guarantee that this catches all of them. By contrast, excluding the null node would be a bad idea (used in diff-related methods), as demonstrated by existing tests.
-
Georges Racinet authored
The null and wdir nodes are to be avoided, see heptapod#717
-
- Nov 22, 2022
-
-
Georges Racinet authored
-
- Nov 20, 2022
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
-
- Nov 19, 2022
-
-
Georges Racinet authored
We don't use functions meant for early return any more. Some more precise exceptions can still be useful, if there is possibility for catching them.
-
Georges Racinet authored
Using `context.abort()` makes it of course much simpler. This is the final actual effort to switch to the exception-style treatment. Closes #99
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
In this case there was a complication: `error.Abort` actually just raises `Exception()` which is hard to tell apart from other instances of `Exception` (usually in subclasses though).
-
Georges Racinet authored
-
Georges Racinet authored
Leaving only `not_implemented()`, which is more interesting. The warning log levels and more generally automatic logging will be better treated with interceptors.
-
Georges Racinet authored
Again from generic to specific, and lexicographic within each category
-
Georges Racinet authored
In some cases encountered, not having to explicitely return the proper response type in case of error is a good simplification.
-
Georges Racinet authored
As usual, from most generic, starting with the standard library to the most specific (parent package)
-
Georges Racinet authored
-
Georges Racinet authored
Part of #99
-
Georges Racinet authored
for #117
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
Git range revspecs have the potential to be as much harmful with the `follow` option than the redundant ancestors iteration we already removed for #117, but it will take us more time to find out how to treat them efficiently. Meanwhile, we prefer to fall back to ignoring copy-tracing rather than risking it to crash the entire system. In Git world, copy-tracing is a best-effort anyway (heuristic with several levels of analysis) This finishes the work on this nasty resource exhaustion issue. Closes #117
-
Georges Racinet authored
We find it clearer that way. It is quite possible that the automatic sorting will be found to be undesireable in the future (e.g, if caller needs to apply another layer of sorting)
-
Georges Racinet authored
A good occasion to replace comments with proper docstrings and to remove some duplications, with an inner `resolve_git_range()`.
-
Georges Racinet authored
Even though the Gitaly protocol often uses `revision` to mean a `revision specification (hence multiple revisions), it is better to lift the ambiguity in our inner namings.
-
Georges Racinet authored
Starting with a function split out from `service.commit`.
-
Georges Racinet authored
It is only fair to add Sushil, given that he implemented many of these methods
-
Georges Racinet authored
Using the `follow` flag already implies iteration on ancestors, and specifying ancestors of a revision with follow makes the revset engine to iterate on ancestors of each ancestor of the revision (quadratic complexity). In practice, this is a severe depletion of resources: on a large repository such as Heptapod itself, we measured up to an increase of 200MB per second of resident memory, growing until the OOMKiller saves the system at over 20G memory footprint. This can be reproduced on a clone of https://foss.heptapod.net/heptapod/heptapod with hg log -r '::default' --follow -l 40 README.md (will probably also be mitigated in Mercurial > 6.3). Since `follow` already forces iteration on ancestors, we simply don't need to add `::` in that case. This is the main solution for #117, yet more investigation is needed about `X..Y` and `X...Y` Git revspecs to actually close it.
-
- Nov 18, 2022
-
-
Georges Racinet authored
The most notable adaptation is that `RepositoryService` stub was renamed to `Repository` in the default branch, and the stable branch added a new import of this module in test_messages.py
-
Georges Racinet authored
This shows that excluding a changeset also blocks its phase change to be in the bundle. This is somewhat logical, but it is not what we need for the main use-case: incremental backups, see #94
-
Georges Racinet authored
It was useless to log `patterns`: this is an iterator, and it has already been consumed.
-
Georges Racinet authored
Part of #94. Cannot be considered to be complete because of lack of incrementality with obsolete changesets (as outlined in the test: `obs_sha` gets bundled again). There are serious doubts with phase changes of already backed up changesets, too.
-
- Nov 16, 2022
-
-
Georges Racinet authored
Closes #116
-