##// END OF EJS Templates
rewriteutil: also consider pending obsoletes when updating hashes in messages...
Matt Harbison -
r45994:f7e293e0 default
parent child Browse files
Show More
@@ -79,12 +79,18 b' def skip_empty_successor(ui, command):'
79 )
79 )
80
80
81
81
82 def update_hash_refs(repo, commitmsg):
82 def update_hash_refs(repo, commitmsg, pending=None):
83 """Replace all obsolete commit hashes in the message with the current hash.
83 """Replace all obsolete commit hashes in the message with the current hash.
84
84
85 If the obsolete commit was split or is divergent, the hash is not replaced
85 If the obsolete commit was split or is divergent, the hash is not replaced
86 as there's no way to know which successor to choose.
86 as there's no way to know which successor to choose.
87
88 For commands that update a series of commits in the current transaction, the
89 new obsolete markers can be considered by setting ``pending`` to a mapping
90 of ``pending[oldnode] = [successor_node1, successor_node2,..]``.
87 """
91 """
92 if not pending:
93 pending = {}
88 cache = {}
94 cache = {}
89 sha1s = re.findall(sha1re, commitmsg)
95 sha1s = re.findall(sha1re, commitmsg)
90 unfi = repo.unfiltered()
96 unfi = repo.unfiltered()
@@ -94,9 +100,13 b' def update_hash_refs(repo, commitmsg):'
94 continue
100 continue
95 ctx = unfi[fullnode]
101 ctx = unfi[fullnode]
96 if not ctx.obsolete():
102 if not ctx.obsolete():
97 continue
103 successors = pending.get(fullnode)
98
104 if successors is None:
99 successors = obsutil.successorssets(repo, ctx.node(), cache=cache)
105 continue
106 # obsutil.successorssets() returns a list of list of nodes
107 successors = [successors]
108 else:
109 successors = obsutil.successorssets(repo, ctx.node(), cache=cache)
100
110
101 # We can't make any assumptions about how to update the hash if the
111 # We can't make any assumptions about how to update the hash if the
102 # cset in question was split or diverged.
112 # cset in question was split or diverged.
General Comments 0
You need to be logged in to leave comments. Login now