Mercurial > public > mercurial-scm > hg
comparison mercurial/merge.py @ 20415:e4d7cbc94219 stable
merge: don't overwrite file untracked after remove, abort with 'untracked files'
Merge could overwrite untracked files and cause data loss.
Instead we now handle the 'local side removed file and has untracked file
instead' case as the 'other side added file that local has untracked' case:
FILE: untracked file exists
abort: untracked files in working directory differ from files in requested revision
It could perhaps make sense to create .orig files when overwriting, either
instead of aborting or when overwriting anyway because of force ... but for now
we stay consistent with similar cases.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Mon, 10 Feb 2014 00:43:54 +0100 |
parents | 95b9c6149e17 |
children | 4c4cd64c754b |
comparison
equal
deleted
inserted
replaced
20357:6863d42eb59a | 20415:e4d7cbc94219 |
---|---|
341 elif not force and different: | 341 elif not force and different: |
342 aborts.append((f, "ud")) | 342 aborts.append((f, "ud")) |
343 else: | 343 else: |
344 actions.append((f, "g", (fl2,), "remote created")) | 344 actions.append((f, "g", (fl2,), "remote created")) |
345 elif n2 and n2 != ma[f]: | 345 elif n2 and n2 != ma[f]: |
346 prompts.append((f, "dc")) # prompt deleted/changed | 346 different = _checkunknownfile(repo, wctx, p2, f) |
347 if not force and different: | |
348 aborts.append((f, "ud")) | |
349 else: | |
350 # if different: old untracked f may be overwritten and lost | |
351 prompts.append((f, "dc")) # prompt deleted/changed | |
347 | 352 |
348 for f, m in sorted(aborts): | 353 for f, m in sorted(aborts): |
349 if m == "ud": | 354 if m == "ud": |
350 repo.ui.warn(_("%s: untracked file differs\n") % f) | 355 repo.ui.warn(_("%s: untracked file differs\n") % f) |
351 else: assert False, m | 356 else: assert False, m |