##// END OF EJS Templates
Don't generate git patches that rename a file to multiple destinations...
Alexis S. L. Carvalho -
r3702:70c3ee22 default
parent child Browse files
Show More
@@ -547,6 +547,7 b' def diff(repo, node1=None, node2=None, f'
547
547
548 all = modified + added + removed
548 all = modified + added + removed
549 all.sort()
549 all.sort()
550 gone = {}
550 for f in all:
551 for f in all:
551 to = None
552 to = None
552 tn = None
553 tn = None
@@ -574,7 +575,11 b' def diff(repo, node1=None, node2=None, f'
574 a, arev = copied[f]
575 a, arev = copied[f]
575 omode = gitmode(mmap.execf(a))
576 omode = gitmode(mmap.execf(a))
576 addmodehdr(header, omode, mode)
577 addmodehdr(header, omode, mode)
577 op = a in removed and 'rename' or 'copy'
578 if a in removed and a not in gone:
579 op = 'rename'
580 gone[a] = 1
581 else:
582 op = 'copy'
578 header.append('%s from %s\n' % (op, a))
583 header.append('%s from %s\n' % (op, a))
579 header.append('%s to %s\n' % (op, f))
584 header.append('%s to %s\n' % (op, f))
580 to = getfile(a).read(arev)
585 to = getfile(a).read(arev)
@@ -127,3 +127,11 b' hg diff --git'
127 echo
127 echo
128 echo '% created between r1 and parent of wd; renamed in the wd'
128 echo '% created between r1 and parent of wd; renamed in the wd'
129 hg diff --git -r -2
129 hg diff --git -r -2
130 hg ci -m 'mv brand-new brand-new2'
131
132 echo '% one file is copied to many destinations and removed'
133 hg cp brand-new2 brand-new3
134 hg mv brand-new2 brand-new3-2
135 hg ci -m 'multiple renames/copies'
136 hg diff --git -r -2 -r -1
137
@@ -133,3 +133,10 b' new file mode 100644'
133 +++ b/brand-new2
133 +++ b/brand-new2
134 @@ -0,0 +1,1 @@
134 @@ -0,0 +1,1 @@
135 +
135 +
136 % one file is copied to many destinations and removed
137 diff --git a/brand-new2 b/brand-new3
138 rename from brand-new2
139 rename to brand-new3
140 diff --git a/brand-new2 b/brand-new3-2
141 copy from brand-new2
142 copy to brand-new3-2
General Comments 0
You need to be logged in to leave comments. Login now