comparison utility_commands.py @ 99:1da7aafdd323

Refactored outgoing_revisions into util where it really belongs.
author Augie Fackler <durin42@gmail.com>
date Fri, 21 Nov 2008 16:11:24 -0600
parents 10dd34deac3b
children a3b717e4abf5
comparison
equal deleted inserted replaced
98:c7ac013cf7fd 99:1da7aafdd323
18 def run_svn_info(ui, repo, hg_repo_path, **opts): 18 def run_svn_info(ui, repo, hg_repo_path, **opts):
19 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path, 19 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path,
20 ui_=ui) 20 ui_=ui)
21 svn_commit_hashes = dict(zip(hge.revmap.itervalues(), 21 svn_commit_hashes = dict(zip(hge.revmap.itervalues(),
22 hge.revmap.iterkeys())) 22 hge.revmap.iterkeys()))
23 o_r = outgoing_revisions(ui, repo, hge, svn_commit_hashes) 23 o_r = util.outgoing_revisions(ui, repo, hge, svn_commit_hashes)
24 ha = repo.parents()[0] 24 ha = repo.parents()[0]
25 if o_r: 25 if o_r:
26 ha = repo[o_r[-1]].parents()[0] 26 ha = repo[o_r[-1]].parents()[0]
27 r, br = svn_commit_hashes[ha.node()] 27 r, br = svn_commit_hashes[ha.node()]
28 if br == None: 28 if br == None:
60 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path, 60 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path,
61 ui_=ui) 61 ui_=ui)
62 svn_commit_hashes = dict(zip(hge.revmap.itervalues(), 62 svn_commit_hashes = dict(zip(hge.revmap.itervalues(),
63 hge.revmap.iterkeys())) 63 hge.revmap.iterkeys()))
64 ha = repo.parents()[0] 64 ha = repo.parents()[0]
65 o_r = outgoing_revisions(ui, repo, hge, svn_commit_hashes) 65 o_r = util.outgoing_revisions(ui, repo, hge, svn_commit_hashes)
66 if o_r: 66 if o_r:
67 ha = repo[o_r[-1]].parents()[0] 67 ha = repo[o_r[-1]].parents()[0]
68 if ha.node() != node.nullid: 68 if ha.node() != node.nullid:
69 r, br = svn_commit_hashes[ha.node()] 69 r, br = svn_commit_hashes[ha.node()]
70 ui.status('Working copy parent revision is %s: r%s on %s\n' % 70 ui.status('Working copy parent revision is %s: r%s on %s\n' %
85 """ 85 """
86 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path, 86 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path,
87 ui_=ui) 87 ui_=ui)
88 svn_commit_hashes = dict(zip(hge.revmap.itervalues(), 88 svn_commit_hashes = dict(zip(hge.revmap.itervalues(),
89 hge.revmap.iterkeys())) 89 hge.revmap.iterkeys()))
90 o_r = outgoing_revisions(ui, repo, hge, svn_commit_hashes) 90 o_r = util.outgoing_revisions(ui, repo, hge, svn_commit_hashes)
91 if not o_r: 91 if not o_r:
92 ui.status('Nothing to rebase!\n') 92 ui.status('Nothing to rebase!\n')
93 return 0 93 return 0
94 if len(repo.parents()[0].children()): 94 if len(repo.parents()[0].children()):
95 ui.status('Refusing to rebase non-head commit like a coward\n') 95 ui.status('Refusing to rebase non-head commit like a coward\n')
121 """ 121 """
122 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path, 122 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path,
123 ui_=ui) 123 ui_=ui)
124 svn_commit_hashes = dict(zip(hge.revmap.itervalues(), 124 svn_commit_hashes = dict(zip(hge.revmap.itervalues(),
125 hge.revmap.iterkeys())) 125 hge.revmap.iterkeys()))
126 o_r = outgoing_revisions(ui, repo, hge, svn_commit_hashes) 126 o_r = util.outgoing_revisions(ui, repo, hge, svn_commit_hashes)
127 if not (o_r and len(o_r)): 127 if not (o_r and len(o_r)):
128 ui.status('No outgoing changes found.\n') 128 ui.status('No outgoing changes found.\n')
129 return 0 129 return 0
130 displayer = cmdutil.show_changeset(ui, repo, opts, buffered=False) 130 displayer = cmdutil.show_changeset(ui, repo, opts, buffered=False)
131 for node in reversed(o_r): 131 for node in reversed(o_r):
132 displayer.show(repo[node]) 132 displayer.show(repo[node])
133
134
135 def outgoing_revisions(ui, repo, hg_editor, reverse_map):
136 """Given a repo and an hg_editor, determines outgoing revisions for the
137 current working copy state.
138 """
139 outgoing_rev_hashes = []
140 working_rev = repo.parents()
141 assert len(working_rev) == 1
142 working_rev = working_rev[0]
143 if working_rev.node() in reverse_map:
144 return
145 while (not working_rev.node() in reverse_map
146 and working_rev.node() != node.nullid):
147 outgoing_rev_hashes.append(working_rev.node())
148 working_rev = working_rev.parents()
149 assert len(working_rev) == 1
150 working_rev = working_rev[0]
151 if working_rev.node() != node.nullid:
152 return outgoing_rev_hashes