Mercurial > hgsubversion
comparison tests/test_push_command.py @ 1036:e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Subversion differentiates adding an already-added file from
transaction being out of date and edit conflicts. Fixes #400.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Tue, 16 Jul 2013 10:09:55 -0400 |
parents | 110794582448 |
children | ada2400241c4 |
comparison
equal
deleted
inserted
replaced
1035:2c64453f98a7 | 1036:e775ffbcb359 |
---|---|
45 {'branch': 'default', }) | 45 {'branch': 'default', }) |
46 new_hash = repo.commitctx(ctx) | 46 new_hash = repo.commitctx(ctx) |
47 hg.update(repo, repo['tip'].node()) | 47 hg.update(repo, repo['tip'].node()) |
48 old_tip = repo['tip'].node() | 48 old_tip = repo['tip'].node() |
49 self.pushrevisions() | 49 self.pushrevisions() |
50 tip = self.repo['tip'] | |
51 self.assertEqual(tip.node(), old_tip) | |
52 | |
53 def test_push_add_of_added_upstream_gives_sane_error(self): | |
54 repo = self.repo | |
55 def file_callback(repo, memctx, path): | |
56 if path == 'adding_file': | |
57 return context.memfilectx(path=path, | |
58 data='foo', | |
59 islink=False, | |
60 isexec=False, | |
61 copied=False) | |
62 raise IOError() | |
63 p1 = repo['default'].node() | |
64 ctx = context.memctx(repo, | |
65 (p1, node.nullid), | |
66 'automated test', | |
67 ['adding_file'], | |
68 file_callback, | |
69 'an_author', | |
70 '2008-10-07 20:59:48 -0500', | |
71 {'branch': 'default', }) | |
72 new_hash = repo.commitctx(ctx) | |
73 hg.update(repo, repo['tip'].node()) | |
74 old_tip = repo['tip'].node() | |
75 self.pushrevisions() | |
76 tip = self.repo['tip'] | |
77 self.assertNotEqual(tip.node(), old_tip) | |
78 | |
79 # This node adds the same file as the first one we added, and | |
80 # will be refused by the server for adding a file that already | |
81 # exists. We should respond with an error suggesting the user | |
82 # rebase. | |
83 ctx = context.memctx(repo, | |
84 (p1, node.nullid), | |
85 'automated test', | |
86 ['adding_file'], | |
87 file_callback, | |
88 'an_author', | |
89 '2008-10-07 20:59:48 -0500', | |
90 {'branch': 'default', }) | |
91 new_hash = repo.commitctx(ctx) | |
92 hg.update(repo, repo['tip'].node()) | |
93 old_tip = repo['tip'].node() | |
94 try: | |
95 self.pushrevisions() | |
96 except hgutil.Abort, e: | |
97 assert "pull again and rebase" in str(e) | |
50 tip = self.repo['tip'] | 98 tip = self.repo['tip'] |
51 self.assertEqual(tip.node(), old_tip) | 99 self.assertEqual(tip.node(), old_tip) |
52 | 100 |
53 def test_cant_push_with_changes(self): | 101 def test_cant_push_with_changes(self): |
54 repo = self.repo | 102 repo = self.repo |