sapling/mercurial
Mads Kiilerich 120b66d101 merge: fix crash on criss cross merge with dir move and delete (issue5020)
Work around that 'dm' in the data model only can have one operation for the
target file, but still can have multiple and conflicting operations on the
source file where the other operation is a 'rm'. The move would thus fail with
'abort: No such file or directory'.

In this case it is "obvious" that the file should be removed, either before or
after moving it. We thus keep the 'rm' of the source file but drop the 'dm'.

This is not a pretty fix but quite "obviously" safe (famous last words...) as
it only touches a rare code path that used to crash. It is possible that it
would be better to swap the files for 'dm' as suggested on
https://bz.mercurial-scm.org/show_bug.cgi?id=5020#c13 but it is not entirely
obvious that it not just would create conflicts on the other file. That can be
revisited later.
2017-01-31 03:25:59 +01:00
..
cffi setup: move cffi stuff to mercurial/cffi 2016-11-09 22:08:30 +00:00
default.d mergetools.rc: find OSX FileMerge in the new location inside Xcode 4.3 2015-10-16 11:37:34 +02:00
help help: don't let tools reflow revlog flags list 2017-01-17 11:45:10 -08:00
hgweb hgweb: simplify calculation of first revision in filelog command 2017-01-17 09:19:24 +01:00
httpclient httpclient: update to 54868ef054d2 of httpplus 2016-06-27 11:53:50 -04:00
pure lazymanifest: write a more efficient, pypy friendly version of lazymanifest 2016-09-12 13:37:14 +02:00
templates hgweb: support Content Security Policy 2017-01-10 23:37:08 -08:00
__init__.py py3: refactor token parsing to handle call args properly 2016-10-14 17:55:02 +01:00
ancestor.py py3: convert to next() function 2016-05-16 21:30:53 +00:00
archival.py py3: remove use of *L syntax 2016-09-01 02:29:46 +05:30
base85.c base85: fix comparison of an int and a long 2015-08-21 14:29:42 -04:00
bdiff_module.c bdiff: include util.h 2016-10-13 13:27:14 +02:00
bdiff.c bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bdiff.h bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bitmanipulation.h internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
bookmarks.py bookmarks: abort 'push -B .' when no active bookmark 2016-06-13 23:50:26 +02:00
branchmap.py rbc: fix superfluous rebuilding from scratch - don't abuse self._rbcnamescount 2016-07-18 22:25:09 +02:00
bundle2.py bundle2: allow compression options to be passed to compressor 2017-01-10 11:19:37 -08:00
bundlerepo.py revlog: flag processor 2017-01-10 16:15:21 +00:00
byterange.py pycompat: switch to util.urlreq/util.urlerr for py3 compat 2016-04-06 23:22:12 +00:00
changegroup.py revlog: add 'raw' argument to revision and _addrevision 2017-01-05 17:16:07 +00:00
changelog.py revlog: make 'storedeltachains' a "public" attribute 2016-10-14 02:25:08 +02:00
chgserver.py chgserver: add the setprocname interface 2017-01-11 07:36:48 +08:00
cmdutil.py ui: rename tmpdir parameter to more specific repopath 2017-01-18 18:25:51 -08:00
color.py color: load 'colortable' from extension using an 'extraloader' 2016-11-18 18:18:15 +01:00
commands.py help: update help for hg update which was misleading (issue5427) 2017-01-18 03:44:19 +05:30
commandserver.py commandserver: update comment about setpgid 2016-07-18 15:59:08 +01:00
compat.h compat: define ssize_t as int on 32bit Windows, silences C4142 warning 2016-07-15 23:54:56 +09:00
config.py config: add hasconfig method and supporting plumbing 2016-01-07 19:45:03 -08:00
context.py context: extract _changesinrange() out of blockancestors() 2017-01-16 09:22:32 +01:00
copies.py merge: avoid superfluous filemerges when grafting through renames (issue5407) 2016-10-25 21:01:53 +02:00
crecord.py crecord: add an experimental option for space key to move cursor down 2017-01-08 10:08:29 +08:00
dagparser.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
dagutil.py dagutil: use absolute_import 2015-08-08 19:04:09 -07:00
debugcommands.py repair: implement requirements checking for upgrades 2016-12-18 16:16:54 -08:00
demandimport.py demandimport: do not raise ImportError for unknown item in fromlist 2016-12-19 22:46:00 +09:00
destutil.py update: use single quotes in use warning 2016-09-02 21:49:33 +00:00
diffhelpers.c diffhelpers: fix botched return statement from e48d70075d8a 2015-01-28 13:34:20 -05:00
dirs.c dirs: use PyVarObject_HEAD_INIT 2016-10-13 13:14:14 +02:00
dirstate.py dirstate: fix debug.dirstate.delaywrite to use the new "now" after sleeping 2016-10-18 16:52:35 +02:00
dirstateguard.py dirstateguard: move to new module so I can break some layering violations 2016-11-21 21:29:32 -05:00
discovery.py discovery: use single quotes in use warning 2016-09-20 23:47:30 +00:00
dispatch.py dispatch: make hg --profile wrap reposetup 2016-09-22 12:36:30 -07:00
dummycert.pem ssl: on OS X, use a dummy cert to trick Python/OpenSSL to use system CA certs 2014-09-26 02:19:48 +02:00
encoding.py py3: convert encoding name and mode to str 2016-09-28 20:39:06 +09:00
error.py shelve: make unshelve be able to abort in any case 2016-07-13 16:16:18 +01:00
exchange.py exchange: refactor APIs to obtain bundle data (API) 2016-10-16 10:38:52 -07:00
exewrapper.c exewrapper: add .dll to LoadLibrary() argument 2016-04-27 09:23:39 -07:00
extensions.py extensions: move the "import" logic out from "load" 2016-10-03 03:37:10 +01:00
fancyopts.py flags: allow specifying --no-boolean-flag on the command line (BC) 2016-09-13 22:57:57 -04:00
filelog.py revlog: merge hash checking subfunctions 2016-12-13 14:21:36 +00:00
filemerge.py py3: make format strings unicodes and not bytes 2016-10-08 16:10:58 +02:00
fileset.py help: clarify quotes are needed for filesets.size expressions 2016-09-21 16:33:37 +00:00
formatter.py py3: conditionalize cPickle import by adding in util 2016-06-04 14:38:00 +05:30
graphmod.py revset: add new topographical sort 2016-06-13 18:20:00 +01:00
hbisect.py bisect: move check_state into the bisect module 2016-08-24 04:25:20 +02:00
help.py help: make "mergetool" an alias for "merge-tools" 2017-01-13 21:21:02 -08:00
hg.py merge: add conflict labels to merge command 2016-10-07 08:51:50 -07:00
hook.py hook: split config reading further 2016-04-14 17:03:49 -07:00
httpconnection.py largefiles: use context for file closing 2016-10-08 00:59:41 +02:00
httppeer.py httppeer: advertise and support application/mercurial-0.2 2016-12-24 15:22:18 -07:00
i18n.py i18n: make the locale directory name the same string type as the datapath 2016-10-08 05:26:18 -04:00
keepalive.py keepalive: rewrite readline() 2015-10-07 16:02:45 -07:00
localrepo.py localrepo: experimental support for non-zlib revlog compression 2017-01-13 20:16:56 -08:00
lock.py lock: clear postrelease hooks list after usage 2016-04-16 09:00:15 -07:00
lsprof.py lsprof: use print function 2016-01-02 11:40:53 -08:00
lsprofcalltree.py lsprofcalltree: use print function 2016-01-02 11:45:29 -08:00
mail.py mail: handle renamed email.Header 2016-10-07 17:30:11 +02:00
manifest.c manifest: use PyVarObject_HEAD_INIT 2016-10-13 13:17:23 +02:00
manifest.py manifest: make treemanifestctx store the repo 2016-10-18 17:44:42 -07:00
match.py i18n: translate abort messages 2016-06-14 11:53:55 +02:00
mdiff.py patch: add similarity config knob in experimental section 2017-01-09 10:51:44 -08:00
merge.py merge: fix crash on criss cross merge with dir move and delete (issue5020) 2017-01-31 03:25:59 +01:00
mergeutil.py checkunresolved: move to new package to help avoid import cycles 2016-11-21 21:31:45 -05:00
minirst.py help: search section of help topic by translated section name correctly 2016-05-13 07:19:59 +09:00
mpatch_module.c mpatch: raise MemoryError instead of mpatchError if lalloc() failed 2016-08-07 10:06:56 +09:00
mpatch.c internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
mpatch.h mpatch: raise MemoryError instead of mpatchError if lalloc() failed 2016-08-07 10:06:56 +09:00
namespaces.py namespaces: fix name/node confusion 2016-03-16 23:12:43 +00:00
node.py node: use byte literals to construct nullid and wdirid 2016-03-12 14:04:57 -08:00
obsolete.py obsolete: use single quotes in use warning 2016-09-20 23:48:19 +00:00
osutil.c osutil: use PyLongObject on Python 3 for listdir_slot 2016-10-09 13:47:46 +02:00
parser.py parser: extend buildargsdict() to support variable-length positional args 2017-01-09 15:25:52 +09:00
parsers.c parsers: avoid PySliceObject cast on Python 3 2016-10-13 13:34:53 +02:00
patch.py patch: check length of git index header only if integer is specified 2017-01-15 16:33:15 +09:00
pathencode.c pathencode: use assert() for PyBytes_Check() 2016-10-13 21:42:11 +02:00
pathutil.py util: rename checkcase() to fscasesensitive() (API) 2016-08-30 09:22:53 -07:00
peer.py py3: convert to next() function 2016-05-16 21:30:53 +00:00
phases.py phases: make writing phaseroots file out avoid ambiguity of file stat 2016-06-03 00:44:20 +09:00
policy.py policy: add cffi policy for PyPy 2016-06-07 15:35:58 +02:00
posix.py merge with stable 2017-01-04 14:52:59 -05:00
profiling.py py3: replace pycompat.getenv with encoding.environ.get 2017-01-15 13:17:05 +05:30
progress.py progress: stop excessive clearing (issue4801) 2016-05-06 17:53:06 -05:00
pushkey.py pushkey: use absolute_import 2015-08-08 19:57:27 -07:00
pvec.py pvec: use absolute_import 2015-12-21 21:32:58 -08:00
pycompat.py py3: replace pycompat.getenv with encoding.environ.get 2017-01-15 13:17:05 +05:30
registrar.py registrar: make format strings unicodes and not bytes 2016-10-07 08:32:18 -04:00
repair.py repair: clean up stale lock file from store backup 2016-11-24 18:45:29 -08:00
repoview.py cleanup: replace uses of util.(md5|sha1|sha256|sha512) with hashlib.\1 2016-06-10 00:12:33 -04:00
revlog.py revlog: give EXTSTORED flag value to narrowhg 2017-01-17 11:25:02 -08:00
revset.py revset: prevent using outgoing() and remote() in hgweb session (BC) 2017-01-20 21:33:18 +09:00
scmposix.py py3: replace sys.platform with pycompat.sysplatform (part 1 of 2) 2016-12-19 02:15:24 +05:30
scmutil.py scmutil: ignore EPERM at os.utime, which avoids ambiguity at closing 2016-11-13 06:12:22 +09:00
scmwindows.py py3: conditionalize _winreg import 2016-08-10 04:35:44 +05:30
server.py chgserver: make it a core module and drop extension flags 2016-10-15 14:30:16 +09:00
setdiscovery.py setdiscovery: use iterbatch interface instead of batch 2016-03-01 17:44:41 -05:00
similar.py similar: remove caching from the module level 2017-01-13 11:42:36 -08:00
simplemerge.py simplemerge: move conflict warning message to filemerge 2015-10-09 13:54:52 -07:00
sshpeer.py i18n: translate abort messages 2016-06-14 11:53:55 +02:00
sshserver.py wireproto: compress data from a generator 2016-10-16 11:10:21 -07:00
sslutil.py sslutil: guard against broken certifi installations (issue5406) 2016-10-19 18:06:14 +02:00
statichttprepo.py manifest: make manifestlog a storecache 2016-10-18 17:33:39 -07:00
statprof.py statprof: require input file 2017-01-18 22:45:07 -08:00
store.py store: py26 compat, don't use a dict comprehension 2016-10-09 12:58:22 +02:00
streamclone.py streamclone: clear caches after writing changes into files for visibility 2016-09-12 03:06:29 +09:00
subrepo.py rebase: provide detailed hint to abort message if working dir is not clean 2017-01-10 09:32:27 +01:00
tagmerge.py tagmerge: use absolute_import 2015-08-08 20:10:46 -07:00
tags.py tags: silence hgtagsfnodes reading failures 2016-04-28 15:40:43 -05:00
templatefilters.py pycompat: switch to util.urlreq/util.urlerr for py3 compat 2016-04-06 23:22:12 +00:00
templatekw.py templater: add '{envvars}' to access environment variables 2017-01-17 23:12:54 -05:00
templater.py templater: use unfiltered changelog to calculate shortest() at constant time 2016-10-25 21:49:30 +09:00
transaction.py transaction: open a file with checkambig=True to avoid file stat ambiguity 2016-09-22 21:52:00 +09:00
treediscovery.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
ui.py ui: rename tmpdir parameter to more specific repopath 2017-01-18 18:25:51 -08:00
unionrepo.py revlog: add 'raw' argument to revision and _addrevision 2017-01-05 17:16:07 +00:00
url.py py3: replace pycompat.getenv with encoding.environ.get 2017-01-15 13:17:05 +05:30
util.h parsers: move PyInt aliasing out of util.h 2016-10-09 13:50:53 +02:00
util.py util: make sortdict.keys() return a copy 2017-01-30 22:58:56 -08:00
verify.py verify: specify unit for ui.progress when checking files 2016-03-11 20:18:41 +08:00
win32.py py3: use pycompat.getcwd instead of os.getcwd 2016-12-22 01:54:17 +05:30
windows.py chgserver: extract utility to bind unix domain socket to long path 2016-05-21 16:52:04 +09:00
wireproto.py wireproto: advertise supported media types and compression formats 2016-12-24 15:21:46 -07:00
worker.py py3: replace os.name with pycompat.osname (part 1 of 2) 2016-12-19 00:16:52 +05:30