Show More
@@ -505,7 +505,7 b' class patchfile:' | |||
|
505 | 505 | return -1 |
|
506 | 506 | |
|
507 | 507 | class hunk: |
|
508 | def __init__(self, desc, num, lr, context): | |
|
508 | def __init__(self, desc, num, lr, context, gitpatch=None): | |
|
509 | 509 | self.number = num |
|
510 | 510 | self.desc = desc |
|
511 | 511 | self.hunk = [ desc ] |
@@ -515,6 +515,7 b' class hunk:' | |||
|
515 | 515 | self.read_context_hunk(lr) |
|
516 | 516 | else: |
|
517 | 517 | self.read_unified_hunk(lr) |
|
518 | self.gitpatch = gitpatch | |
|
518 | 519 | |
|
519 | 520 | def read_unified_hunk(self, lr): |
|
520 | 521 | m = unidesc.match(self.desc) |
@@ -669,10 +670,12 b' class hunk:' | |||
|
669 | 670 | return len(self.a) == self.lena and len(self.b) == self.lenb |
|
670 | 671 | |
|
671 | 672 | def createfile(self): |
|
672 | return self.starta == 0 and self.lena == 0 | |
|
673 | create = self.gitpatch is None or self.gitpatch.op == 'ADD' | |
|
674 | return self.starta == 0 and self.lena == 0 and create | |
|
673 | 675 | |
|
674 | 676 | def rmfile(self): |
|
675 | return self.startb == 0 and self.lenb == 0 | |
|
677 | remove = self.gitpatch is None or self.gitpatch.op == 'DELETE' | |
|
678 | return self.startb == 0 and self.lenb == 0 and remove | |
|
676 | 679 | |
|
677 | 680 | def fuzzit(self, l, fuzz, toponly): |
|
678 | 681 | # this removes context lines from the top and bottom of list 'l'. It |
@@ -773,7 +776,7 b' class binhunk:' | |||
|
773 | 776 | |
|
774 | 777 | def parsefilename(str): |
|
775 | 778 | # --- filename \t|space stuff |
|
776 | s = str[4:] | |
|
779 | s = str[4:].rstrip('\r\n') | |
|
777 | 780 | i = s.find('\t') |
|
778 | 781 | if i < 0: |
|
779 | 782 | i = s.find(' ') |
@@ -905,7 +908,8 b' def iterhunks(ui, fp, sourcefile=None):' | |||
|
905 | 908 | try: |
|
906 | 909 | if context == None and x.startswith('***************'): |
|
907 | 910 | context = True |
|
908 | current_hunk = hunk(x, hunknum + 1, lr, context) | |
|
911 | gpatch = changed.get(bfile[2:], (None, None))[1] | |
|
912 | current_hunk = hunk(x, hunknum + 1, lr, context, gpatch) | |
|
909 | 913 | except PatchError, err: |
|
910 | 914 | ui.debug(err) |
|
911 | 915 | current_hunk = None |
@@ -153,3 +153,31 b' echo line0 >> a' | |||
|
153 | 153 | hg ci -m brancha |
|
154 | 154 | hg import -v tip.patch |
|
155 | 155 | cd .. |
|
156 | ||
|
157 | # Test hunk touching empty files (issue906) | |
|
158 | hg init empty | |
|
159 | cd empty | |
|
160 | touch a | |
|
161 | touch b1 | |
|
162 | touch c1 | |
|
163 | echo d > d | |
|
164 | hg ci -Am init | |
|
165 | echo a > a | |
|
166 | echo b > b1 | |
|
167 | hg mv b1 b2 | |
|
168 | echo c > c1 | |
|
169 | hg copy c1 c2 | |
|
170 | rm d | |
|
171 | touch d | |
|
172 | hg diff --git | |
|
173 | hg ci -m empty | |
|
174 | hg export --git tip > empty.diff | |
|
175 | hg up -C 0 | |
|
176 | hg import empty.diff | |
|
177 | for name in a b1 b2 c1 c2 d; | |
|
178 | do | |
|
179 | echo % $name file | |
|
180 | test -f $name && cat $name | |
|
181 | done | |
|
182 | cd .. | |
|
183 |
@@ -134,3 +134,48 b' applying tip.patch' | |||
|
134 | 134 | patching file a |
|
135 | 135 | Hunk #1 succeeded at 1 with fuzz 2 (offset -2 lines). |
|
136 | 136 | a |
|
137 | adding a | |
|
138 | adding b1 | |
|
139 | adding c1 | |
|
140 | adding d | |
|
141 | diff --git a/a b/a | |
|
142 | --- a/a | |
|
143 | +++ b/a | |
|
144 | @@ -0,0 +1,1 @@ | |
|
145 | +a | |
|
146 | diff --git a/b1 b/b2 | |
|
147 | rename from b1 | |
|
148 | rename to b2 | |
|
149 | --- a/b1 | |
|
150 | +++ b/b2 | |
|
151 | @@ -0,0 +1,1 @@ | |
|
152 | +b | |
|
153 | diff --git a/c1 b/c1 | |
|
154 | --- a/c1 | |
|
155 | +++ b/c1 | |
|
156 | @@ -0,0 +1,1 @@ | |
|
157 | +c | |
|
158 | diff --git a/c1 b/c2 | |
|
159 | copy from c1 | |
|
160 | copy to c2 | |
|
161 | --- a/c1 | |
|
162 | +++ b/c2 | |
|
163 | @@ -0,0 +1,1 @@ | |
|
164 | +c | |
|
165 | diff --git a/d b/d | |
|
166 | --- a/d | |
|
167 | +++ b/d | |
|
168 | @@ -1,1 +0,0 @@ | |
|
169 | -d | |
|
170 | 4 files updated, 0 files merged, 2 files removed, 0 files unresolved | |
|
171 | applying empty.diff | |
|
172 | % a file | |
|
173 | a | |
|
174 | % b1 file | |
|
175 | % b2 file | |
|
176 | b | |
|
177 | % c1 file | |
|
178 | c | |
|
179 | % c2 file | |
|
180 | c | |
|
181 | % d file |
General Comments 0
You need to be logged in to leave comments.
Login now