unify channels into a `Result` channel
removing unused flags
refactor to more explicitly handle operating in pipe mode (using STDIN and STDOUT)
raise a useful error when unable to get data from git