It was currently unused and only confuses. The initialization of
worktrees can currently only be controlled via the `--init-worktree`
command line switch. This is unfortunate, but it's the only was to
handle it right now. Changing it would mean a restructure of the code,
mainly the `tree::sync_trees` function.
This refactors a huge chunk of the code base to make it more maintainable.
Main points:
* Proper separation between bin and lib. Bin handles argument parsing &
validation and (most of) the output. Lib provides interfaces for all
opreations.
* Before, libgit2 internals were literred throughout the codebase,
mainly the `Repository` struct and `git2::Error` in Results. They
library is now properly wrapped in `repo.rs`, which exposes only the
required functionality. It also standardizes the Error messages
(they're just Strings for now) and handles stuff like the copious
usage of Options to wrap maybe-invalid-utf-8 values. The program will
still panic on non-utf-8 Strings e.g. in git remotes, but I guess this
is acceptable. If you actually manage to hit this case, I promise I'll
fix it :D
* Many unwraps() are now gone and properly handled.
* The table printing functionality is now confined to `table.rs`,
instead of passing tables as parameters through the whole program.