diff options
author | Dan Davison <dandavison7@gmail.com> | 2021-05-20 14:45:08 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-20 14:45:08 -0400 |
commit | 1bf8479bb19be230b61a11ba3f74d7341ffd6914 (patch) | |
tree | 90c65b69c9bb30a8824b685f72be69ed5e1fbbd5 /src/parse.rs | |
parent | fe16f7533deb55e83ed0d736e1cd826ad8ae7522 (diff) |
Emit 'mode [-+]x' instead of full file permission bits (#607)
Ref #583
Diffstat (limited to 'src/parse.rs')
-rw-r--r-- | src/parse.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/parse.rs b/src/parse.rs index 3329248b..8e93dd6a 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -162,9 +162,13 @@ pub fn get_file_change_description_from_file_paths( plus_file, FileEvent::ModeChange(old_mode), FileEvent::ModeChange(new_mode), - ) if minus_file == plus_file => { - format!("{}: {} ⟶ {}", plus_file, old_mode, new_mode) - } + ) if minus_file == plus_file => match (old_mode.as_str(), new_mode.as_str()) { + // 100755 for executable and 100644 for non-executable are the only file modes Git records. + // https://medium.com/@tahteche/how-git-treats-changes-in-file-permissions-f71874ca239d + ("100644", "100755") => format!("{}: mode +x", plus_file), + ("100755", "100644") => format!("{}: mode -x", plus_file), + _ => format!("{}: {} ⟶ {}", plus_file, old_mode, new_mode), + }, (minus_file, plus_file, _, _) if minus_file == plus_file => format!( "{}{}", format_label(&config.file_modified_label), |