git-p4: Detect changes to executable bit and include them in p4 submit.

This changeset takes advantage of the new parseDiffTreeEntry(...) function to
detect changes to the execute bit in the git repository.  During submit, git-p4
now looks for changes to the executable bit and if it finds them it "reopens"
the file in perforce, which allows it to change the file type.

The logic for adding the executable bit in perforce is straightforward: the +x
modifier can be used. Removing the executable bit in perforce requires that the
entire filetype be redefined (there is no way to join remove the bit with a -x
modifier, for example). This changeset includes logic to remove the executable
bit from the full file type while preserving the base file type and other
modifiers.

Signed-off-by: Chris Pettitt <cpettitt@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 file changed
tree: ce58ad7438f6cf6a13dce38c50912492734967c8
  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-fetch-pack.c
  45. builtin-fetch.c
  46. builtin-fmt-merge-msg.c
  47. builtin-for-each-ref.c
  48. builtin-fsck.c
  49. builtin-gc.c
  50. builtin-grep.c
  51. builtin-http-fetch.c
  52. builtin-init-db.c
  53. builtin-log.c
  54. builtin-ls-files.c
  55. builtin-ls-tree.c
  56. builtin-mailinfo.c
  57. builtin-mailsplit.c
  58. builtin-merge-base.c
  59. builtin-merge-file.c
  60. builtin-mv.c
  61. builtin-name-rev.c
  62. builtin-pack-objects.c
  63. builtin-pack-refs.c
  64. builtin-prune-packed.c
  65. builtin-prune.c
  66. builtin-push.c
  67. builtin-read-tree.c
  68. builtin-reflog.c
  69. builtin-rerere.c
  70. builtin-reset.c
  71. builtin-rev-list.c
  72. builtin-rev-parse.c
  73. builtin-revert.c
  74. builtin-rm.c
  75. builtin-runstatus.c
  76. builtin-shortlog.c
  77. builtin-show-branch.c
  78. builtin-show-ref.c
  79. builtin-stripspace.c
  80. builtin-symbolic-ref.c
  81. builtin-tag.c
  82. builtin-tar-tree.c
  83. builtin-unpack-objects.c
  84. builtin-update-index.c
  85. builtin-update-ref.c
  86. builtin-upload-archive.c
  87. builtin-verify-pack.c
  88. builtin-verify-tag.c
  89. builtin-write-tree.c
  90. builtin.h
  91. bundle.c
  92. bundle.h
  93. cache-tree.c
  94. cache-tree.h
  95. cache.h
  96. check-builtins.sh
  97. check-racy.c
  98. color.c
  99. color.h
  100. combine-diff.c
  101. commit.c
  102. commit.h
  103. config.c
  104. config.mak.in
  105. configure.ac
  106. connect.c
  107. convert.c
  108. copy.c
  109. COPYING
  110. csum-file.c
  111. csum-file.h
  112. ctype.c
  113. daemon.c
  114. date.c
  115. decorate.c
  116. decorate.h
  117. delta.h
  118. diff-delta.c
  119. diff-lib.c
  120. diff.c
  121. diff.h
  122. diffcore-break.c
  123. diffcore-delta.c
  124. diffcore-order.c
  125. diffcore-pickaxe.c
  126. diffcore-rename.c
  127. diffcore.h
  128. dir.c
  129. dir.h
  130. dump-cache-tree.c
  131. entry.c
  132. environment.c
  133. exec_cmd.c
  134. exec_cmd.h
  135. fast-import.c
  136. fetch-pack.h
  137. fixup-builtins
  138. generate-cmdlist.sh
  139. git-add--interactive.perl
  140. git-am.sh
  141. git-archimport.perl
  142. git-bisect.sh
  143. git-checkout.sh
  144. git-clean.sh
  145. git-clone.sh
  146. git-commit.sh
  147. git-compat-util.h
  148. git-cvsexportcommit.perl
  149. git-cvsimport.perl
  150. git-cvsserver.perl
  151. git-filter-branch.sh
  152. git-instaweb.sh
  153. git-lost-found.sh
  154. git-ls-remote.sh
  155. git-merge-octopus.sh
  156. git-merge-one-file.sh
  157. git-merge-ours.sh
  158. git-merge-resolve.sh
  159. git-merge-stupid.sh
  160. git-merge.sh
  161. git-mergetool.sh
  162. git-parse-remote.sh
  163. git-pull.sh
  164. git-quiltimport.sh
  165. git-rebase--interactive.sh
  166. git-rebase.sh
  167. git-relink.perl
  168. git-remote.perl
  169. git-repack.sh
  170. git-request-pull.sh
  171. git-send-email.perl
  172. git-sh-setup.sh
  173. git-stash.sh
  174. git-submodule.sh
  175. git-svn.perl
  176. GIT-VERSION-GEN
  177. git.c
  178. git.spec.in
  179. gitk
  180. grep.c
  181. grep.h
  182. hash-object.c
  183. hash.c
  184. hash.h
  185. help.c
  186. http-push.c
  187. http-walker.c
  188. http.c
  189. http.h
  190. ident.c
  191. imap-send.c
  192. index-pack.c
  193. INSTALL
  194. interpolate.c
  195. interpolate.h
  196. list-objects.c
  197. list-objects.h
  198. lockfile.c
  199. log-tree.c
  200. log-tree.h
  201. mailmap.c
  202. mailmap.h
  203. Makefile
  204. match-trees.c
  205. merge-file.c
  206. merge-index.c
  207. merge-recursive.c
  208. merge-tree.c
  209. mktag.c
  210. mktree.c
  211. object-refs.c
  212. object.c
  213. object.h
  214. pack-check.c
  215. pack-redundant.c
  216. pack-write.c
  217. pack.h
  218. pager.c
  219. patch-delta.c
  220. patch-id.c
  221. patch-ids.c
  222. patch-ids.h
  223. path-list.c
  224. path-list.h
  225. path.c
  226. peek-remote.c
  227. pkt-line.c
  228. pkt-line.h
  229. progress.c
  230. progress.h
  231. quote.c
  232. quote.h
  233. reachable.c
  234. reachable.h
  235. read-cache.c
  236. README
  237. receive-pack.c
  238. reflog-walk.c
  239. reflog-walk.h
  240. refs.c
  241. refs.h
  242. remote.c
  243. remote.h
  244. revision.c
  245. revision.h
  246. run-command.c
  247. run-command.h
  248. send-pack.c
  249. server-info.c
  250. setup.c
  251. sha1_file.c
  252. sha1_name.c
  253. shallow.c
  254. shell.c
  255. show-index.c
  256. sideband.c
  257. sideband.h
  258. strbuf.c
  259. strbuf.h
  260. symlinks.c
  261. tag.c
  262. tag.h
  263. tar.h
  264. test-absolute-path.c
  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. transport.c
  274. transport.h
  275. tree-diff.c
  276. tree-walk.c
  277. tree-walk.h
  278. tree.c
  279. tree.h
  280. unpack-file.c
  281. unpack-trees.c
  282. unpack-trees.h
  283. update-server-info.c
  284. upload-pack.c
  285. usage.c
  286. utf8.c
  287. utf8.h
  288. var.c
  289. walker.c
  290. walker.h
  291. write_or_die.c
  292. wt-status.c
  293. wt-status.h
  294. xdiff-interface.c
  295. xdiff-interface.h