# HG changeset patch # User Benoit Boissinot # Date 1187655212 -7200 # Node ID 212de429e0006463c74f12e9f9406046ae42dbdd # Parent 6a1d2dd96b8e590db00da38515b6622796775383 make hg add of a removed file unremove the file if a file was removed, hg add shouldn't mark the file as added, but as normal see issue683 diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -997,6 +997,8 @@ class localrepository(repo.repository): "supported currently\n") % f) elif self.dirstate[f] in 'amn': self.ui.warn(_("%s already tracked!\n") % f) + elif self.dirstate[f] == 'r': + self.dirstate.normaldirty(f) else: self.dirstate.add(f) finally: diff --git a/tests/test-add b/tests/test-add new file mode 100755 --- /dev/null +++ b/tests/test-add @@ -0,0 +1,42 @@ +#!/bin/sh + +hg init a +cd a +echo a > a +hg add -n +hg st +hg add +hg st + +echo b > b +hg add -n b +hg st +hg add b +hg st +echo % should fail +hg add b +hg st + +hg ci -m 0 +echo % should fail +hg add a + +echo aa > a +hg ci -m 1 +hg up 0 +echo aaa > a +hg ci -m 2 + +hg merge +hg st +echo % should fail +hg add a +hg st +hg ci -m merge + +echo % issue683 +hg rm a +hg st +echo a > a +hg add a +hg st diff --git a/tests/test-add.out b/tests/test-add.out new file mode 100644 --- /dev/null +++ b/tests/test-add.out @@ -0,0 +1,29 @@ +adding a +? a +adding a +A a +A a +? b +A a +A b +% should fail +b already tracked! +A a +A b +% should fail +a already tracked! +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +warning: conflicts during merge. +merging a +merging a failed! +0 files updated, 0 files merged, 0 files removed, 1 files unresolved +There are unresolved merges, you can redo the full merge using: + hg update -C 2 + hg merge 1 +M a +% should fail +a already tracked! +M a +% issue683 +R a +M a