Thanks to Peff and Junio for your inputs on the best way to solve this problem. The patch series is made up as follows: [1/4]: Documentation for the chmod option [2,3/4]: Small refactoring to simplify the final step [4/4]: The actual change that introduces the new behaviour. Thomas Gummerer (4): add: document the chmod option update-index: use the same structure for chmod as add read-cache: introduce chmod_index_entry add: modify already added files when --chmod is given Documentation/git-add.txt | 7 +++++- builtin/add.c | 36 +++++++++++++++++++++---------- builtin/checkout.c | 2 +- builtin/commit.c | 2 +- builtin/update-index.c | 55 ++++++++++++++++++----------------------------- cache.h | 12 ++++++----- read-cache.c | 33 +++++++++++++++++++++------- t/t3700-add.sh | 21 ++++++++++++++++++ 8 files changed, 107 insertions(+), 61 deletions(-) -- 2.10.0.304.gf2ff484