38b8a4a2230cae562050ff420230883ed8a71d78 in mercurial main repo changed
changeset_printer so that it outputs all the troubles for the changeset.
To do it ctx.troubled() is accessed and in turn it asks for obsstore and
unfiltered() repo. It causes tests failures in hg-git because overlay repo has
neither obsstore field nor unfiltered method. This patch adds unfiltered method
that always returns unfiltered repo from the handler.
Core hg has refactored the manifest logic to remove the manifest class. So we
need to update our use of manifests to use manifestlog and manifestctx instead.
Tested this by running the tests against hg 3.8, 3.9, 4.0, and @ (c27614f2dec).
When importing changesets, hggit uses the config knob hggit.mapsavefrequency to
determine how often to save the mapfile. This allows a user to interrupt the
import without losing all progress.
This patch adds this same functionality to the export mechanism.
The previous implementation only allowed passing 40-hexdigit hashes or
12-hexdigit abbreviations to `gitnode(hash)`. Shorter or longer hashes
were accepted, but failed silently. With this fix, any unambiguous
abbreviation is accepted. `gitnode(a5b)` selects the revision whose Git hash
starts with `a5b`, if there is one, and aborts if there are several.
In mercurial, commit bea06dca98f6 changed some manifest lookups from using
manifest.read(sha) to using manifestlog[sha]. This change adds support for this
new kind of lookup. The old method is not removed to preserve compatibility.
A commit's extras field should be considered user-supplied input that can take
any form. Trusting it to be properly formatted is dangerous and can prevent
forward progress. Instead, swallow errors due to malformed extras and carry on.
Previously, if a user enables hg-git and in a non-git repo (i.e.
hg-only) they have a .gitignore, then hg-git will try to parse that. I
consider this a bug and a bad performance regression for what should be
a no-op.
The ReviewBoard repository contains a Mercurial repository within its
Git repository; if you just convert that into Mercurial, you can't
check it out. We handle this similar to invalid Git paths: by default,
refuse the conversion, but with a configuration knob to force it
through with a warning.
See also:
https://github.com/reviewboard/reviewboard/https://reviewboard.org/bugs/3190
Dulwich treats ref names internally as unicode strings (probably
because of Python 3?), which means that at some points it tries to do
os.path.join between the repo path and the unicode of the ref name,
which fails miserably if we construct the repo with a str and not a
unicode. Kludge around this problem.
Fixes issue 172.
This is a roll-forward of 3df4d529a2f2, which should be valid now that
the previous change defends against accidentally writing unicode tags
inside the templater.
If we don't do this we might end up with unicodes being written using
ui, which then breaks in popbuffer in test-encoding.t. This appears to
be an academic concern until we start passing unicode paths to git
repos, which we need to do in order to resolve some other problems. Yay.
bookmarks.write is deprecated and it was showing warning messages in
test-hg-branch.t with the latest test runner from core mercurial. Tested with
both hg 2.8 and hg tip.