合并成功后,log 里该看到什么
下面这段模拟了合并后的提交图。运行它,看新的分支顶端有几个父提交:
def ancestors(g, c):
seen = set()
st = [c]
while st:
x = st.pop()
if x in seen:
continue
seen.add(x)
st.extend(g[x])
return seen
def merge(g, cur, target, new_id):
if is_ff(g, cur, target):
return target, g
g2 = dict(g)
g2[new_id] = [cur, target]
return new_id, g2
def is_ff(g, cur, target):
return cur in ancestors(g, target)
g = {'3f2a91c': [],
'7b4e2d0': ['3f2a91c'],
'a1c5f83': ['7b4e2d0'],
'e90d417': ['7b4e2d0'],
'5c8b206': ['e90d417']}
tip, g2 = merge(g, 'a1c5f83', '5c8b206', '9d31e5f')
print(str(len(g2[tip])) + "/" + str(len(ancestors(g2, tip))))
全部评论