comparison mercurial/cmdutil.py @ 45831:976b26bdd0d8

commit: warn the user when a commit already exists Sometimes, a commit will result in an exact match of a preexisting commit, and if that commit isn't a branch head, hg will incorrectly note that it created a new head. Instead, we should warn the user that commit already existed in the repository. In practice, this bug is rather uncommon, and will only occur when the usr explicitly sets the date. Please note that this commit contains an API change to cmdutil.commitstatus() Differential Revision: https://phab.mercurial-scm.org/D9257
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Thu, 29 Oct 2020 13:54:25 +0100
parents e9555305c5c6
children 8d72e29ad1e0
comparison
equal deleted inserted replaced
45830:4404f129341e 45831:976b26bdd0d8
3111 edittext.append(b"") 3111 edittext.append(b"")
3112 3112
3113 return b"\n".join(edittext) 3113 return b"\n".join(edittext)
3114 3114
3115 3115
3116 def commitstatus(repo, node, branch, bheads=None, opts=None): 3116 def commitstatus(repo, node, branch, bheads=None, tip=None, opts=None):
3117 if opts is None: 3117 if opts is None:
3118 opts = {} 3118 opts = {}
3119 ctx = repo[node] 3119 ctx = repo[node]
3120 parents = ctx.parents() 3120 parents = ctx.parents()
3121 3121
3122 if ( 3122 if tip is not None and repo.changelog.tip() == tip:
3123 # avoid reporting something like "committed new head" when
3124 # recommitting old changesets, and issue a helpful warning
3125 # for most instances
3126 repo.ui.warn(_("warning: commit already existed in the repository!\n"))
3127 elif (
3123 not opts.get(b'amend') 3128 not opts.get(b'amend')
3124 and bheads 3129 and bheads
3125 and node not in bheads 3130 and node not in bheads
3126 and not any( 3131 and not any(
3127 p.node() in bheads and p.branch() == branch for p in parents 3132 p.node() in bheads and p.branch() == branch for p in parents