Parse `git status --porcelain`
Print rename info
Add 'bold', 'bgcolor' arguments for `c()`
Print XY status correctly
Summarize subdirectory changes

New and untracked directories are not handled yet.
Print file list using git-ls-tree
Traverse files using `os.listdir()`

`git ls-tree` and `git status` don't say anything about
new directories, so `os.listdir()` is called.

Now `git ls-tree` determines if the file or directory
is out of interest.
This means untracked directory is still not printed.
Merge branch 'feature/subdir' into develop
print submodule info
Merge branch 'feature/submodule' into develop
Traverse both `git ls-tree` and `os.listdir`

Forgot that `os.listdir()` does not know any deleted files.
Uses `files`/`directories` list to avoid duplication.
Accept path argument
output_line: rename argument
Print relative path for filenames
move `output_line()` code to `main()`
Merge branch 'feature/arg_dir' into develop
Make `is_directory` variable meaningful
Merge branch 'feature/refactor' into develop
Print files ordered
Suppress exception if `git ls-tree` fails

The error message "fatal: Not a valid object name HEAD" is
quite useful (you forgot git-flow init!) therefore not suppressed.