git-apply: Fix removal of new trailing blank lines.

The earlier code removed one newline too many from the hunk that
adds new lines at the end of the file.  Also the way the code
counted the added blank lines was somewhat roundabout; I think
the way updated code does it is more direct and easier to
follow:

 * We keep track of the number of blank lines added;

 * While processing each line, we notice if it adds a blank
   line, and increment the counter, or reset it to zero
   otherwise;

 * When actually we apply the data, we remove the empty lines we
   counted earlier if we are applying it at the end of the
   file.

Signed-off-by: Junio C Hamano <junkio@cox.net>
1 file changed
tree: 972c5b8f9823cad61171fdd378ff23690de31faa
  1. arm/
  2. compat/
  3. contrib/
  4. Documentation/
  5. git-gui/
  6. gitweb/
  7. mozilla-sha1/
  8. perl/
  9. ppc/
  10. t/
  11. templates/
  12. xdiff/
  13. .gitignore
  14. .mailmap
  15. alloc.c
  16. archive-tar.c
  17. archive-zip.c
  18. archive.h
  19. attr.c
  20. attr.h
  21. base85.c
  22. blob.c
  23. blob.h
  24. builtin-add.c
  25. builtin-annotate.c
  26. builtin-apply.c
  27. builtin-archive.c
  28. builtin-blame.c
  29. builtin-branch.c
  30. builtin-bundle.c
  31. builtin-cat-file.c
  32. builtin-check-attr.c
  33. builtin-check-ref-format.c
  34. builtin-checkout-index.c
  35. builtin-commit-tree.c
  36. builtin-config.c
  37. builtin-count-objects.c
  38. builtin-describe.c
  39. builtin-diff-files.c
  40. builtin-diff-index.c
  41. builtin-diff-tree.c
  42. builtin-diff.c
  43. builtin-fetch--tool.c
  44. builtin-fmt-merge-msg.c
  45. builtin-for-each-ref.c
  46. builtin-fsck.c
  47. builtin-gc.c
  48. builtin-grep.c
  49. builtin-init-db.c
  50. builtin-log.c
  51. builtin-ls-files.c
  52. builtin-ls-tree.c
  53. builtin-mailinfo.c
  54. builtin-mailsplit.c
  55. builtin-merge-base.c
  56. builtin-merge-file.c
  57. builtin-mv.c
  58. builtin-name-rev.c
  59. builtin-pack-objects.c
  60. builtin-pack-refs.c
  61. builtin-prune-packed.c
  62. builtin-prune.c
  63. builtin-push.c
  64. builtin-read-tree.c
  65. builtin-reflog.c
  66. builtin-rerere.c
  67. builtin-rev-list.c
  68. builtin-rev-parse.c
  69. builtin-revert.c
  70. builtin-rm.c
  71. builtin-runstatus.c
  72. builtin-shortlog.c
  73. builtin-show-branch.c
  74. builtin-show-ref.c
  75. builtin-stripspace.c
  76. builtin-symbolic-ref.c
  77. builtin-tar-tree.c
  78. builtin-unpack-objects.c
  79. builtin-update-index.c
  80. builtin-update-ref.c
  81. builtin-upload-archive.c
  82. builtin-verify-pack.c
  83. builtin-write-tree.c
  84. builtin.h
  85. cache-tree.c
  86. cache-tree.h
  87. cache.h
  88. check-builtins.sh
  89. check-racy.c
  90. color.c
  91. color.h
  92. combine-diff.c
  93. commit.c
  94. commit.h
  95. config.c
  96. config.mak.in
  97. configure.ac
  98. connect.c
  99. convert-objects.c
  100. convert.c
  101. copy.c
  102. COPYING
  103. csum-file.c
  104. csum-file.h
  105. ctype.c
  106. daemon.c
  107. date.c
  108. decorate.c
  109. decorate.h
  110. delta.h
  111. diff-delta.c
  112. diff-lib.c
  113. diff.c
  114. diff.h
  115. diffcore-break.c
  116. diffcore-delta.c
  117. diffcore-order.c
  118. diffcore-pickaxe.c
  119. diffcore-rename.c
  120. diffcore.h
  121. dir.c
  122. dir.h
  123. dump-cache-tree.c
  124. entry.c
  125. environment.c
  126. exec_cmd.c
  127. exec_cmd.h
  128. fast-import.c
  129. fetch-pack.c
  130. fetch.c
  131. fetch.h
  132. generate-cmdlist.sh
  133. git-add--interactive.perl
  134. git-am.sh
  135. git-applymbox.sh
  136. git-applypatch.sh
  137. git-archimport.perl
  138. git-bisect.sh
  139. git-checkout.sh
  140. git-clean.sh
  141. git-clone.sh
  142. git-commit.sh
  143. git-compat-util.h
  144. git-cvsexportcommit.perl
  145. git-cvsimport.perl
  146. git-cvsserver.perl
  147. git-fetch.sh
  148. git-instaweb.sh
  149. git-lost-found.sh
  150. git-ls-remote.sh
  151. git-merge-octopus.sh
  152. git-merge-one-file.sh
  153. git-merge-ours.sh
  154. git-merge-resolve.sh
  155. git-merge-stupid.sh
  156. git-merge.sh
  157. git-mergetool.sh
  158. git-p4import.py
  159. git-parse-remote.sh
  160. git-pull.sh
  161. git-quiltimport.sh
  162. git-rebase.sh
  163. git-relink.perl
  164. git-remote.perl
  165. git-repack.sh
  166. git-request-pull.sh
  167. git-reset.sh
  168. git-send-email.perl
  169. git-sh-setup.sh
  170. git-svn.perl
  171. git-svnimport.perl
  172. git-tag.sh
  173. git-verify-tag.sh
  174. GIT-VERSION-GEN
  175. git.c
  176. git.spec.in
  177. gitk
  178. grep.c
  179. grep.h
  180. hash-object.c
  181. help.c
  182. http-fetch.c
  183. http-push.c
  184. http.c
  185. http.h
  186. ident.c
  187. imap-send.c
  188. index-pack.c
  189. INSTALL
  190. interpolate.c
  191. interpolate.h
  192. list-objects.c
  193. list-objects.h
  194. local-fetch.c
  195. lockfile.c
  196. log-tree.c
  197. log-tree.h
  198. mailmap.c
  199. mailmap.h
  200. Makefile
  201. match-trees.c
  202. merge-file.c
  203. merge-index.c
  204. merge-recursive.c
  205. merge-tree.c
  206. mktag.c
  207. mktree.c
  208. object-refs.c
  209. object.c
  210. object.h
  211. pack-check.c
  212. pack-redundant.c
  213. pack-write.c
  214. pack.h
  215. pager.c
  216. patch-delta.c
  217. patch-id.c
  218. patch-ids.c
  219. patch-ids.h
  220. path-list.c
  221. path-list.h
  222. path.c
  223. peek-remote.c
  224. pkt-line.c
  225. pkt-line.h
  226. progress.c
  227. progress.h
  228. quote.c
  229. quote.h
  230. reachable.c
  231. reachable.h
  232. read-cache.c
  233. README
  234. receive-pack.c
  235. reflog-walk.c
  236. reflog-walk.h
  237. refs.c
  238. refs.h
  239. revision.c
  240. revision.h
  241. rsh.c
  242. rsh.h
  243. run-command.c
  244. run-command.h
  245. send-pack.c
  246. server-info.c
  247. setup.c
  248. sha1_file.c
  249. sha1_name.c
  250. shallow.c
  251. shell.c
  252. show-index.c
  253. sideband.c
  254. sideband.h
  255. ssh-fetch.c
  256. ssh-pull.c
  257. ssh-push.c
  258. ssh-upload.c
  259. strbuf.c
  260. strbuf.h
  261. symlinks.c
  262. tag.c
  263. tag.h
  264. tar.h
  265. test-chmtime.c
  266. test-date.c
  267. test-delta.c
  268. test-genrandom.c
  269. test-match-trees.c
  270. test-sha1.c
  271. test-sha1.sh
  272. trace.c
  273. tree-diff.c
  274. tree-walk.c
  275. tree-walk.h
  276. tree.c
  277. tree.h
  278. unpack-file.c
  279. unpack-trees.c
  280. unpack-trees.h
  281. update-server-info.c
  282. upload-pack.c
  283. usage.c
  284. utf8.c
  285. utf8.h
  286. var.c
  287. write_or_die.c
  288. wt-status.c
  289. wt-status.h
  290. xdiff-interface.c
  291. xdiff-interface.h