Show More
@@ -2906,7 +2906,14 b' def amend(ui, repo, old, extra, pats, op' | |||||
2906 | filestoamend = {f for f in wctx.files() if matcher(f)} |
|
2906 | filestoamend = {f for f in wctx.files() if matcher(f)} | |
2907 |
|
2907 | |||
2908 | changes = len(filestoamend) > 0 |
|
2908 | changes = len(filestoamend) > 0 | |
2909 |
|
|
2909 | changeset_copies = ( | |
|
2910 | repo.ui.config(b'experimental', b'copies.read-from') | |||
|
2911 | != b'filelog-only' | |||
|
2912 | ) | |||
|
2913 | # If there are changes to amend or if copy information needs to be read | |||
|
2914 | # from the changeset extras, we cannot take the fast path of using | |||
|
2915 | # filectxs from the old commit. | |||
|
2916 | if changes or changeset_copies: | |||
2910 | # Recompute copies (avoid recording a -> b -> a) |
|
2917 | # Recompute copies (avoid recording a -> b -> a) | |
2911 | copied = copies.pathcopies(base, wctx, matcher) |
|
2918 | copied = copies.pathcopies(base, wctx, matcher) | |
2912 | if old.p2: |
|
2919 | if old.p2: | |
@@ -2927,19 +2934,19 b' def amend(ui, repo, old, extra, pats, op' | |||||
2927 |
|
2934 | |||
2928 | def filectxfn(repo, ctx_, path): |
|
2935 | def filectxfn(repo, ctx_, path): | |
2929 | try: |
|
2936 | try: | |
|
2937 | # Return None for removed files. | |||
|
2938 | if path in wctx.removed(): | |||
|
2939 | return None | |||
|
2940 | ||||
2930 | # If the file being considered is not amongst the files |
|
2941 | # If the file being considered is not amongst the files | |
2931 |
# to be amended, we should |
|
2942 | # to be amended, we should use the file context from the | |
2932 | # old changeset. This avoids issues when only some files in |
|
2943 | # old changeset. This avoids issues when only some files in | |
2933 | # the working copy are being amended but there are also |
|
2944 | # the working copy are being amended but there are also | |
2934 | # changes to other files from the old changeset. |
|
2945 | # changes to other files from the old changeset. | |
2935 |
if path |
|
2946 | if path in filestoamend: | |
2936 |
|
|
2947 | fctx = wctx[path] | |
2937 |
|
2948 | else: | ||
2938 |
|
|
2949 | fctx = old.filectx(path) | |
2939 | if path in wctx.removed(): |
|
|||
2940 | return None |
|
|||
2941 |
|
||||
2942 | fctx = wctx[path] |
|
|||
2943 | flags = fctx.flags() |
|
2950 | flags = fctx.flags() | |
2944 | mctx = context.memfilectx( |
|
2951 | mctx = context.memfilectx( | |
2945 | repo, |
|
2952 | repo, |
@@ -324,7 +324,7 b' Existing copy information is preserved b' | |||||
324 | $ hg ci --amend -m 'new description' |
|
324 | $ hg ci --amend -m 'new description' | |
325 | saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob) |
|
325 | saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob) | |
326 | $ hg showcopies |
|
326 | $ hg showcopies | |
327 | a -> l (no-extra !) |
|
327 | a -> l | |
328 | $ cd .. |
|
328 | $ cd .. | |
329 |
|
329 | |||
330 | Test rebasing a commit with copy information |
|
330 | Test rebasing a commit with copy information |
General Comments 0
You need to be logged in to leave comments.
Login now