comparison hgsubversion/wrappers.py @ 626:8e621dbb82d4 1.1.1

push: return reasonable status codes to the end user
author Augie Fackler <durin42@gmail.com>
date Sun, 27 Jun 2010 21:18:47 -0500
parents 8acae2416ec1
children 3ff8666b1479
comparison
equal deleted inserted replaced
625:96552e855d7e 626:8e621dbb82d4
127 127
128 # Strategy: 128 # Strategy:
129 # 1. Find all outgoing commits from this head 129 # 1. Find all outgoing commits from this head
130 if len(repo.parents()) != 1: 130 if len(repo.parents()) != 1:
131 ui.status('Cowardly refusing to push branch merge\n') 131 ui.status('Cowardly refusing to push branch merge\n')
132 return 1 132 return 0 # results in nonzero exit status, see hg's commands.py
133 workingrev = repo.parents()[0] 133 workingrev = repo.parents()[0]
134 ui.status('searching for changes\n') 134 ui.status('searching for changes\n')
135 hashes = meta.revmap.hashes() 135 hashes = meta.revmap.hashes()
136 outgoing = util.outgoing_revisions(repo, hashes, workingrev.node()) 136 outgoing = util.outgoing_revisions(repo, hashes, workingrev.node())
137 if not (outgoing and len(outgoing)): 137 if not (outgoing and len(outgoing)):
138 ui.status('no changes found\n') 138 ui.status('no changes found\n')
139 return 0 139 return 1 # so we get a sane exit status, see hg's commands.push
140 while outgoing: 140 while outgoing:
141 oldest = outgoing.pop(-1) 141 oldest = outgoing.pop(-1)
142 old_ctx = repo[oldest] 142 old_ctx = repo[oldest]
143 if len(old_ctx.parents()) != 1: 143 if len(old_ctx.parents()) != 1:
144 ui.status('Found a branch merge, this needs discussion and ' 144 ui.status('Found a branch merge, this needs discussion and '
145 'implementation.\n') 145 'implementation.\n')
146 return 1 146 return 0 # results in nonzero exit status, see hg's commands.py
147 base_n = old_ctx.parents()[0].node() 147 base_n = old_ctx.parents()[0].node()
148 old_children = repo[base_n].children() 148 old_children = repo[base_n].children()
149 svnbranch = repo[base_n].branch() 149 svnbranch = repo[base_n].branch()
150 oldtip = base_n 150 oldtip = base_n
151 samebranchchildren = [c for c in repo[oldtip].children() if c.branch() == svnbranch 151 samebranchchildren = [c for c in repo[oldtip].children() if c.branch() == svnbranch
196 rebasesrc = node.bin(child.extra().get('rebase_source', node.hex(node.nullid))) 196 rebasesrc = node.bin(child.extra().get('rebase_source', node.hex(node.nullid)))
197 # TODO: stop constantly creating the SVNMeta instances. 197 # TODO: stop constantly creating the SVNMeta instances.
198 meta = repo.svnmeta(svn.uuid) 198 meta = repo.svnmeta(svn.uuid)
199 hashes = meta.revmap.hashes() 199 hashes = meta.revmap.hashes()
200 util.swap_out_encoding(old_encoding) 200 util.swap_out_encoding(old_encoding)
201 return 0 201 return 1 # so we get a sane exit status, see hg's commands.push
202 202
203 203
204 def pull(repo, source, heads=[], force=False): 204 def pull(repo, source, heads=[], force=False):
205 """pull new revisions from Subversion""" 205 """pull new revisions from Subversion"""
206 assert source.capable('subversion') 206 assert source.capable('subversion')