convert/gnuarch: robustify cat-log retrieval
GNU Arch used to scale very poorly when revision number was
increasing. This was mostly caused by the huge amount of
cat-log it has to scan/read through to keep track of all
patches that were merged in a given revision.
In order to improve things, cat-log prunning was a common
admin task that would accelerate cat-log parsing at the expense
of unreachabe locally stored cat-logs.
However, these missing cat-logs are still available in the archive.
So try to get them from the archive as a fallback solution.
convert/gnuarch: set prefered locale for str conversions
Seems necessary, as a test on my archives goes further with this.
convert/gnuarch: fix cat-log parsing
cat-log parsing was very wrong. It assumed the Summary header
was comming last, which is wrong. Plus the code was buggy because
it was concatenating all headers in the summary.
As parsing GNU Arch isn't trivial, and python email code does it
so well... just use that ;-)
hgweb: fix long line lengths introduced in
2dc868712dcc
correctly update dirstate after update+mode change (
issue1456)
mq: don't warn about ambiguous patch name when using patch index (
issue1439)
convert/gnuarch: fix switched copy source and destination
Reported by Edouard Gomez <ed.gomez@free.fr>
mq: drop copy records when refreshing regular patches (
issue1441)
Copy information was saved in a common loop, then refined in a git-only block.
The problem was the latter did filter out renames occuring in the current
patch and irrelevant to commit. In the non-git case, copy records still existed
in the dirstate, referencing removed files, making the commit to fail. Git and
non-git copy handling paths are now separated for simplicity.
Reported by Gary Bernhardt