This recode call was removed in 597805361f86, because it looked the
encode(decode()) construct was a no-op. In fact, the first decode() call was
wrong, and entries still have to be encoded before being passed to the sink.
For some reason, if a copy source is deleted in the same revision it is
referenced, it is filtered out. This is silly, because this happens all the
time with move operations. Fortunately, the filtering code is buggy and ends
being a no-op 99% of the time, since it does not delete the right key. Just
remove all this nonsense.
1) use kwtemplater.record attribute for clarity
2) drop optional context argument; consider the speed loss by
duplicating the dictionary lookup repo['.'] as negligible
- removed implementation detail about how the group information is
obtained
- fixed some language, better consistency
- fixed bad comment in hgrc example
`opts['unified'] = '0'` tries to reduce the number of lines to be
processed by patch.diffstat, but here it does not affect diffopts,
thus it does not make sense.
Instead, we can change `diffopts.context` directly.
Added test case for qdiff --stat.
Monkeypatch hgext.dorecord to trigger keyword expansion.
Read data from working directory, not from filelog.
Prevent keyword expansion from within record's commitfunc,
thereby fixing a bug/inconsistency where files which are clean
after recording were overwritten twice.
Monkeypatching patch.diff takes care of this since 224e03d75428.
Test mq more thoroughly by loosening [keywordmaps] and comparing
the output of hg cat with keyword expansion enabled and disabled.
pre-commit time too. This is useful because now it's possible to avoid
violating ACL permissions much sooner, at commit time, instead of
waiting for a PUSH to check if there were any invalid commits.
All callers to localrepo.transaction() must supply a transaction description.
The description and the existing repository tip are then stored
(transactionally) into .hg/undo.desc; where rollback can later find it.
If, on Windows, your repository and working copy are in a reparse point and you
use os.removedirs, you will remove non-empty reparse points, disabling the
reparse point. See @6b1369445b7b.
Introduces color.mode configurable with values 'auto', 'ansi', or 'win32'. Any
other value disables coloring. When 'auto' is selected, the win32 console
method will be used if the win32console Python module is detected (requires
pywin32 to be installed).
Currently, less -R doesn't support colors spanning multiple lines; only
the first line will be colorized.
Instead of allowing colors to span multiple lines, the color extension
now applies colors to each line it receives, even when ui.write() is
given multiple lines in one call.
By overriding ui.write(), ui.write_err(), ui.popbuffer(), and ui.label(),
the color extension can avoid parsing command output and simply colorize
output based on labels.
As before, the color extension provides a list of default colors for
core commands/labels. Other extensions can provide their own defaults by
specifying a colortable dict (similar to cmdtable).
In this process, --color is promoted to a global option and the deprecated
--no-color option is removed.
This adds output labeling support with the following methods:
- ui.write(..., label='topic.name topic2.name2 ...')
- ui.write_err(.., label=...)
- ui.popbuffer(labeled=False)
- ui.label(msg, label)
By adding an API to label output directly, the color extension can forgo
parsing command output and instead override the above methods to insert
ANSI color codes. GUI tools can also override the above methods and use
the labels to do GUI-specific styling.
popbuffer gains a labeled argument that, when set to True, returns its
buffered output with labels handled. In the case of the color extension,
this would return output with color codes embedded. For existing users
that use this method to capture and parse output, labels are discarded
and output returned as normal when labeled is False (the default).
Existing wrappers of ui.write() and ui.write_err() should make sure to
accept its new **opts argument.
Since norepo is a string, not a list, the norepo check was matching
command names against any substring in norepo. This fix splits norepo
into a list of commands.
Fix as proposed by Frank Kingswood.
Avoids
UnboundLocalError: local variable 'mode' referenced before assignment
when cvs fails.
This alsa partially fixes issue1592.
Detecting and showing the path to a keyword extension in a
non-standard place only made sense while keyword.py was not
shipped with Mercurial.
The test output has changed because we do not have a spurious
space at eol anymore.
1) Set the branchname always silently with
dirstate.setbranch().
We create a branch so that testing the {branches} template
does not come up empty. But kwdemo is hardly the place to
inform the user by inference why {branches} is empty on the
default branch.
"demobranch" is ascii and cannot be changed, so using the
internal command instead of commands.branch() is safe.
2) Do not show full path to temporary directory
(distracting long lines on Mac OS X).
3) No special debug output. Output only related to keyword,
no internals like unsetting of commit hooks etc.
Without -c, it is a no-op (the queue is implicitly initialized by all
relevant commands if needed), and queue repositories with -c are an
advanced usage of mq, and not otherwise required.
For a CVS repository checked out with "cvs co .", the prefix used to strip of
what we get from CVS was previously erroneously set to "repopath/.".
We now prevent the dot to be added.
Test folded in test-convert-cvs and simplified by Patrick Mézard
<pmezard@gmail.com>.
If the CVS repo somehow has a symbolic name that references a revision
consisting of a single number (e.g. BAD_TAG: 1), convert will fail when
attempting to find the branches, preventing the initial import from
working.
This patch skips those symbolic names--without warning.
Previously, it only checked for an mq patch if the user explicitly
passed -d/--dest. But rebasing onto an mq patch is a bad idea
regardless of how we determine the rebase destination.
They are not needed inside triple-quoted strings and they confuse the
line number computation done in i18n/hggettext. The script tries to
find the docstring in the source file. When \" in the source is turned
into just " in the docstring, the docstring can no longer be found.
- add a paragraph about default dest/source changesets
- option help: say "changeset" not "revision"
- option help: explain -b/--base better
- clarify that -a/--abort and -c/--continue are different from the
other options
This option is useful when other extensions (e.g., pbranch) want to
use rebase --collapse and append other things before committing.
This is not intended to be used from command line.
- add a paragraph about default dest/source changesets
- option help: say "changeset" not "revision"
- option help: explain -b/--base better
- clarify that -a/--abort and -c/--continue are different from the
other options
- kwcommitctx is inside the wlock of repo.commit: no lock
- _kwfwrite only needs wlock
wlock outside try block, so we don't need to import lock.release
_kwfwrite should even be safer that way, as we moved the status
call inside the try-except block.
Thanks to Benoit Boissinot for help.
The bzrlib try to import the ElementPath module but had a fallback in
case the import fails. Lazy import of this module leads to later
failure.
The bzrlib is used by the convert extension.
If the read thred is in select when the main thread is in close, the main
thread may close the socket between select and read, generating a noisy
traceback. This can be ignored if the shutdown flag is set.
hg inserve was ignoring and miscomputing the --timeout-idle option (seconds
vs. minutes).
Thanks to Jesse Glick for the bugreport and the initial patch.
Cached bookmark information would not be reset when repo.invalidate()
was called, meaning (for instanced) guis would be left with out-of-date
bookmark info. This patch fixes that by overriding bookmark_repo.invalidate()
foo [ ] 0/58
foo [> ] 1/58
foo [=> ] 2/58
...
foo [=======================================================> ] 56/58
foo [========================================================> ] 57/58
foo [=========================================================>] 58/58
The bar now has a '>' character at the end. This indicates the direction,
is consistent with the indeterminate '<=>' bar, and looks much nicer.
This has no effect in real world where progress.refresh in unlikely to be set
to zero, but is very useful in tests where all progress output is to be traced.
It failed on platforms with coarse time.time() granularity, like Windows+py25.
The goal of this patch is to add the IDs of the parents of applied MQ patches
into the patch file headers whenever qnew or qrefresh are run.
This will serve as a reminder of when the patches last applied cleanly and
will let us do more intelligent things in the future, such as:
* Resolve conflicts found when qpushing to a new location by merging
instead of simply showing rejects.
* Display better diffs of versioned MQ patches because we can tell how the
patched files have changed in the meantime.
Here are the new rules this patch introduces. They are checked in this order:
* If a patch currently has old, plain-style patch headers ("From:" and
"Date:") do not change the style or add any new headers.
* If the 'mq.plain' configuration setting is true, only plain-style
headers will be used for all MQ patches.
* qnew will initialize new patches with HG-style headers and fill in the
"# Parent" header with the appropriate parent node.
* qrefresh will refresh the "# Parent" header with the current parent of
the current patch.