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