2903 mergeutil.checkunresolved(ms) |
2903 mergeutil.checkunresolved(ms) |
2904 |
2904 |
2905 filestoamend = {f for f in wctx.files() if matcher(f)} |
2905 filestoamend = {f for f in wctx.files() if matcher(f)} |
2906 |
2906 |
2907 changes = len(filestoamend) > 0 |
2907 changes = len(filestoamend) > 0 |
2908 if changes: |
2908 changeset_copies = ( |
|
2909 repo.ui.config(b'experimental', b'copies.read-from') |
|
2910 != b'filelog-only' |
|
2911 ) |
|
2912 # If there are changes to amend or if copy information needs to be read |
|
2913 # from the changeset extras, we cannot take the fast path of using |
|
2914 # filectxs from the old commit. |
|
2915 if changes or changeset_copies: |
2909 # Recompute copies (avoid recording a -> b -> a) |
2916 # Recompute copies (avoid recording a -> b -> a) |
2910 copied = copies.pathcopies(base, wctx, matcher) |
2917 copied = copies.pathcopies(base, wctx, matcher) |
2911 if old.p2: |
2918 if old.p2: |
2912 copied.update(copies.pathcopies(old.p2(), wctx, matcher)) |
2919 copied.update(copies.pathcopies(old.p2(), wctx, matcher)) |
2913 |
2920 |
2924 if (f not in filestoamend or not samefile(f, wctx, base)) |
2931 if (f not in filestoamend or not samefile(f, wctx, base)) |
2925 ] |
2932 ] |
2926 |
2933 |
2927 def filectxfn(repo, ctx_, path): |
2934 def filectxfn(repo, ctx_, path): |
2928 try: |
2935 try: |
|
2936 # Return None for removed files. |
|
2937 if path in wctx.removed(): |
|
2938 return None |
|
2939 |
2929 # If the file being considered is not amongst the files |
2940 # If the file being considered is not amongst the files |
2930 # to be amended, we should return the file context from the |
2941 # to be amended, we should use the file context from the |
2931 # old changeset. This avoids issues when only some files in |
2942 # old changeset. This avoids issues when only some files in |
2932 # the working copy are being amended but there are also |
2943 # the working copy are being amended but there are also |
2933 # changes to other files from the old changeset. |
2944 # changes to other files from the old changeset. |
2934 if path not in filestoamend: |
2945 if path in filestoamend: |
2935 return old.filectx(path) |
2946 fctx = wctx[path] |
2936 |
2947 else: |
2937 # Return None for removed files. |
2948 fctx = old.filectx(path) |
2938 if path in wctx.removed(): |
|
2939 return None |
|
2940 |
|
2941 fctx = wctx[path] |
|
2942 flags = fctx.flags() |
2949 flags = fctx.flags() |
2943 mctx = context.memfilectx( |
2950 mctx = context.memfilectx( |
2944 repo, |
2951 repo, |
2945 ctx_, |
2952 ctx_, |
2946 fctx.path(), |
2953 fctx.path(), |