comparison push_cmd.py @ 39:b3c7b844b782

Some more fixes of cases discovered in the melange repo. If anyone knows how I can reproduce a "replaced" state in Subversion, I'd love to be able to make a real test case for this code.
author Augie Fackler <durin42@gmail.com>
date Sun, 26 Oct 2008 22:06:13 -0500
parents c5039390332f
children 85fcac4e2291
comparison
equal deleted inserted replaced
38:9ee7ce0505eb 39:b3c7b844b782
63 hge.revmap.iterkeys())) 63 hge.revmap.iterkeys()))
64 outgoing = utility_commands.outgoing_revisions(ui, repo, hge, 64 outgoing = utility_commands.outgoing_revisions(ui, repo, hge,
65 svn_commit_hashes) 65 svn_commit_hashes)
66 return 0 66 return 0
67 67
68 class PrefixMatch(object):
69 def __init__(self, prefix):
70 self.p = prefix
71
72 def files(self):
73 return []
74
75 def __call__(self, fn):
76 return fn.startswith(self.p)
77 68
78 def commit_from_rev(ui, repo, rev_ctx, hg_editor, svn_url, base_revision): 69 def commit_from_rev(ui, repo, rev_ctx, hg_editor, svn_url, base_revision):
79 """Build and send a commit from Mercurial to Subversion. 70 """Build and send a commit from Mercurial to Subversion.
80 """ 71 """
81 target_files = [] 72 target_files = []
104 if file not in parent: 95 if file not in parent:
105 target_files.append(file) 96 target_files.append(file)
106 action = 'add' 97 action = 'add'
107 dirname = '/'.join(file.split('/')[:-1] + ['']) 98 dirname = '/'.join(file.split('/')[:-1] + [''])
108 # check for new directories 99 # check for new directories
109 if not list(parent.walk(PrefixMatch(dirname))): 100 if not list(parent.walk(util.PrefixMatch(dirname))):
110 # check and see if the dir exists svn-side. 101 # check and see if the dir exists svn-side.
111 try: 102 try:
112 assert svn.list_dir('%s/%s' % (branch_path, dirname)) 103 assert svn.list_dir('%s/%s' % (branch_path, dirname))
113 except core.SubversionException, e: 104 except core.SubversionException, e:
114 # dir must not exist 105 # dir must not exist