Show More
@@ -915,34 +915,21 def checkpathconflicts(repo, wctx, mctx, | |||
|
915 | 915 | # can't be updated to cleanly. |
|
916 | 916 | invalidconflicts = set() |
|
917 | 917 | |
|
918 | # The set of directories that contain files that are being created. | |
|
919 | createdfiledirs = set() | |
|
920 | ||
|
918 | 921 | # The set of files deleted by all the actions. |
|
919 | 922 | deletedfiles = set() |
|
920 | 923 | |
|
921 | 924 | for f, (m, args, msg) in actions.items(): |
|
922 | 925 | if m in ('c', 'dc', 'm', 'cm'): |
|
923 | 926 | # This action may create a new local file. |
|
927 | createdfiledirs.update(util.finddirs(f)) | |
|
924 | 928 | if mf.hasdir(f): |
|
925 | 929 | # The file aliases a local directory. This might be ok if all |
|
926 | 930 | # the files in the local directory are being deleted. This |
|
927 | 931 | # will be checked once we know what all the deleted files are. |
|
928 | 932 | remoteconflicts.add(f) |
|
929 | for p in util.finddirs(f): | |
|
930 | if p in mf: | |
|
931 | if p in mctx: | |
|
932 | # The file is in a directory which aliases both a local | |
|
933 | # and a remote file. This is an internal inconsistency | |
|
934 | # within the remote manifest. | |
|
935 | invalidconflicts.add(p) | |
|
936 | else: | |
|
937 | # The file is in a directory which aliases a local file. | |
|
938 | # We will need to rename the local file. | |
|
939 | localconflicts.add(p) | |
|
940 | if p in actions and actions[p][0] in ('c', 'dc', 'm', 'cm'): | |
|
941 | # The file is in a directory which aliases a remote file. | |
|
942 | # This is an internal inconsistency within the remote | |
|
943 | # manifest. | |
|
944 | invalidconflicts.add(p) | |
|
945 | ||
|
946 | 933 | # Track the names of all deleted files. |
|
947 | 934 | if m == 'r': |
|
948 | 935 | deletedfiles.add(f) |
@@ -954,6 +941,24 def checkpathconflicts(repo, wctx, mctx, | |||
|
954 | 941 | f2, flags = args |
|
955 | 942 | deletedfiles.add(f2) |
|
956 | 943 | |
|
944 | # Check all directories that contain created files for path conflicts. | |
|
945 | for p in createdfiledirs: | |
|
946 | if p in mf: | |
|
947 | if p in mctx: | |
|
948 | # A file is in a directory which aliases both a local | |
|
949 | # and a remote file. This is an internal inconsistency | |
|
950 | # within the remote manifest. | |
|
951 | invalidconflicts.add(p) | |
|
952 | else: | |
|
953 | # A file is in a directory which aliases a local file. | |
|
954 | # We will need to rename the local file. | |
|
955 | localconflicts.add(p) | |
|
956 | if p in actions and actions[p][0] in ('c', 'dc', 'm', 'cm'): | |
|
957 | # The file is in a directory which aliases a remote file. | |
|
958 | # This is an internal inconsistency within the remote | |
|
959 | # manifest. | |
|
960 | invalidconflicts.add(p) | |
|
961 | ||
|
957 | 962 | # Rename all local conflicting files that have not been deleted. |
|
958 | 963 | for p in localconflicts: |
|
959 | 964 | if p not in deletedfiles: |
General Comments 0
You need to be logged in to leave comments.
Login now