2965 if opts.get(b'secret'): |
2965 if opts.get(b'secret'): |
2966 commitphase = phases.secret |
2966 commitphase = phases.secret |
2967 newid = repo.commitctx(new) |
2967 newid = repo.commitctx(new) |
2968 ms.reset() |
2968 ms.reset() |
2969 |
2969 |
2970 # Reroute the working copy parent to the new changeset |
2970 with repo.dirstate.parentchange(): |
2971 repo.setparents(newid, repo.nullid) |
2971 # Reroute the working copy parent to the new changeset |
2972 |
2972 repo.setparents(newid, repo.nullid) |
2973 # Fixing the dirstate because localrepo.commitctx does not update |
2973 |
2974 # it. This is rather convenient because we did not need to update |
2974 # Fixing the dirstate because localrepo.commitctx does not update |
2975 # the dirstate for all the files in the new commit which commitctx |
2975 # it. This is rather convenient because we did not need to update |
2976 # could have done if it updated the dirstate. Now, we can |
2976 # the dirstate for all the files in the new commit which commitctx |
2977 # selectively update the dirstate only for the amended files. |
2977 # could have done if it updated the dirstate. Now, we can |
2978 dirstate = repo.dirstate |
2978 # selectively update the dirstate only for the amended files. |
2979 |
2979 dirstate = repo.dirstate |
2980 # Update the state of the files which were added and modified in the |
2980 |
2981 # amend to "normal" in the dirstate. We need to use "normallookup" since |
2981 # Update the state of the files which were added and modified in the |
2982 # the files may have changed since the command started; using "normal" |
2982 # amend to "normal" in the dirstate. We need to use "normallookup" since |
2983 # would mark them as clean but with uncommitted contents. |
2983 # the files may have changed since the command started; using "normal" |
2984 normalfiles = set(wctx.modified() + wctx.added()) & filestoamend |
2984 # would mark them as clean but with uncommitted contents. |
2985 for f in normalfiles: |
2985 normalfiles = set(wctx.modified() + wctx.added()) & filestoamend |
2986 dirstate.normallookup(f) |
2986 for f in normalfiles: |
2987 |
2987 dirstate.normallookup(f) |
2988 # Update the state of files which were removed in the amend |
2988 |
2989 # to "removed" in the dirstate. |
2989 # Update the state of files which were removed in the amend |
2990 removedfiles = set(wctx.removed()) & filestoamend |
2990 # to "removed" in the dirstate. |
2991 for f in removedfiles: |
2991 removedfiles = set(wctx.removed()) & filestoamend |
2992 dirstate.drop(f) |
2992 for f in removedfiles: |
|
2993 dirstate.drop(f) |
2993 |
2994 |
2994 mapping = {old.node(): (newid,)} |
2995 mapping = {old.node(): (newid,)} |
2995 obsmetadata = None |
2996 obsmetadata = None |
2996 if opts.get(b'note'): |
2997 if opts.get(b'note'): |
2997 obsmetadata = {b'note': encoding.fromlocal(opts[b'note'])} |
2998 obsmetadata = {b'note': encoding.fromlocal(opts[b'note'])} |