| This is a feature branch for teaching 'svn patch' to parse |
| old mode 100644 |
| new mode 100755 |
| lines generated by 'git diff'. |
| |
| Steps: |
| |
| - [DONE] Implement parse-diff.c support |
| - [DONE] Implement "make it executable" support, with tests |
| - [DONE] Implement "make it non-executable" support, with tests |
| - [DONE] Handle svn:executable and 'new mode' lines both present |
| - [DONE] parser: Review handling of modes other than 0644/0755 |
| Consider checking "mode & 0111" |
| - [DONE] check rename/copy with mode change; ensure test coverage |
| - [DONE] ensure binary diff & mode changes interact properly |
| - [DONE] Teach 'svn diff --git' to emit mode information (executability) |
| - In addition to the standard propchange form used for all user properties, |
| for compatibility with released 'svn patch' versions |
| - Consider the case of an unversioned file being one side of the diff. |
| - Use-case? Who are the current consumers of 'svn diff --git'? |
| |
| - [TODO] Support symlinks as well (mode 120000) |
| - add the 'svn:special' property |
| - map the link target representation svn to/from git |
| - [DONE] teach parse-diff.c to parse mode 120000 |
| - [TODO] forbid mode=120000 and svn:special on one file |
| (don't know how to parse file contents) |
| - [TODO] munge hunks: repository normal form ↔ just the symlink target |
| - [TODO] add symlink, remove symlink |
| - [TODO] parse mode from "index" lines on file hunks [required for next item] |
| - [TODO] change symlink target |
| - [TODO] change plain file to symlink |
| - [TODO] change symlink to plain file |
| - [TODO] teach 'svn diff --git' to emit mode information (symlinks) |
| [supporting symlinks is orthogonal to supporting mode changes] |