[Updated] D9257: commit: warn the user when a commit already exists
danchr (Dan Villiom Podlaski Christiansen)
phabricator at mercurial-scm.org
Thu Oct 29 12:57:46 UTC 2020
danchr edited the summary of this revision.
danchr retitled this revision from "commit, backout: warn the user when a commit already exists" to "commit: warn the user when a commit already exists".
danchr updated this revision to Diff 23363.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D9257?vs=23356&id=23363
BRANCH
stable
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D9257/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D9257
AFFECTED FILES
mercurial/cmdutil.py
mercurial/commands.py
tests/test-backout.t
tests/test-merge-tools.t
tests/test-phases.t
tests/test-remotefilelog-local.t
tests/test-unamend.t
CHANGE DETAILS
diff --git a/tests/test-unamend.t b/tests/test-unamend.t
--- a/tests/test-unamend.t
+++ b/tests/test-unamend.t
@@ -405,8 +405,10 @@
$ hg co -q 0
$ hg mv a b
$ hg ci -qm 'move to a b'
+ warning: commit already existed in the repository!
$ hg mv b c
$ hg amend
+ warning: commit already existed in the repository!
$ hg mv c d
$ hg unamend
$ hg st --copies --change .
diff --git a/tests/test-remotefilelog-local.t b/tests/test-remotefilelog-local.t
--- a/tests/test-remotefilelog-local.t
+++ b/tests/test-remotefilelog-local.t
@@ -204,5 +204,6 @@
$ hg update -r '.^' -q
$ echo 1 > A
$ hg commit -m foo -A A
+ warning: commit already existed in the repository!
$ hg log -r . -T '{node}\n'
383ce605500277f879b7460a16ba620eb6930b7f
diff --git a/tests/test-phases.t b/tests/test-phases.t
--- a/tests/test-phases.t
+++ b/tests/test-phases.t
@@ -1010,7 +1010,7 @@
$ hg up -C 1
0 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ mkcommit C
- created new head
+ warning: commit already existed in the repository!
$ hg phase -r 2
2: public
@@ -1027,6 +1027,7 @@
7: draft
$ mkcommit F
test-debug-phase: new rev 8: x -> 2
+ warning: commit already existed in the repository!
test-hook-close-phase: de414268ec5ce2330c590b942fbb5ff0b0ca1a0a: -> secret
$ hg phase -r tip
8: secret
@@ -1037,7 +1038,7 @@
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ mkcommit H
test-debug-phase: new rev 5: x -> 2
- created new head
+ warning: commit already existed in the repository!
test-hook-close-phase: a030c6be5127abc010fcbff1851536552e6951a8: -> secret
$ hg phase -r 5
5: secret
diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t
--- a/tests/test-merge-tools.t
+++ b/tests/test-merge-tools.t
@@ -1868,6 +1868,7 @@
$ hg update -q -C 1
$ hg mv f f.txt
$ hg ci -qm "f.txt"
+ warning: commit already existed in the repository!
$ hg update -q -C 2
$ hg merge -y -r tip --tool echo \
> --config merge-tools.echo.args='$base $local $other $output' \
diff --git a/tests/test-backout.t b/tests/test-backout.t
--- a/tests/test-backout.t
+++ b/tests/test-backout.t
@@ -819,5 +819,5 @@
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg backout 2
removing 3
- created new head
+ warning: commit already existed in the repository!
changeset 3:8f188de730d9 backs out changeset 2:cccc23d9d68f
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -850,11 +850,14 @@
message, opts.get(b'user'), opts.get(b'date'), match, editor=e
)
+ # save to detect changes
+ tip = repo.changelog.tip()
+
newnode = cmdutil.commit(ui, repo, commitfunc, [], opts)
if not newnode:
ui.status(_(b"nothing changed\n"))
return 1
- cmdutil.commitstatus(repo, newnode, branch, bheads)
+ cmdutil.commitstatus(repo, newnode, branch, bheads, tip)
def nice(node):
return b'%d:%s' % (repo.changelog.rev(node), short(node))
@@ -2024,6 +2027,7 @@
branch = repo[None].branch()
bheads = repo.branchheads(branch)
+ tip = repo.changelog.tip()
extra = {}
if opts.get(b'close_branch') or opts.get(b'force_close_branch'):
@@ -2113,7 +2117,7 @@
ui.status(_(b"nothing changed\n"))
return 1
- cmdutil.commitstatus(repo, node, branch, bheads, opts)
+ cmdutil.commitstatus(repo, node, branch, bheads, tip, opts)
if not ui.quiet and ui.configbool(b'commands', b'commit.post-status'):
status(
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -3089,13 +3089,18 @@
return b"\n".join(edittext)
-def commitstatus(repo, node, branch, bheads=None, opts=None):
+def commitstatus(repo, node, branch, bheads=None, tip=None, opts=None):
if opts is None:
opts = {}
ctx = repo[node]
parents = ctx.parents()
- if (
+ if tip is not None and repo.changelog.tip() == tip:
+ # avoid reporting something like "committed new head" when
+ # recommitting old changesets, and issue a helpful warning
+ # for most instances
+ repo.ui.warn(_("warning: commit already existed in the repository!\n"))
+ elif (
not opts.get(b'amend')
and bheads
and node not in bheads
To: danchr, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20201029/a4fc12a9/attachment-0002.html>
More information about the Mercurial-patches
mailing list