| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| blob.c | ||
| diff_helpers.c | ||
| diff_helpers.h | ||
| diffiter.c | ||
| drivers.c | ||
| format_email.c | ||
| index.c | ||
| iterator.c | ||
| notify.c | ||
| patch.c | ||
| pathspec.c | ||
| rename.c | ||
| stats.c | ||
| submodules.c | ||
| tree.c | ||
| workdir.c |
This takes the `--stat` and related example options in the example diff.c program and converts them to use the `git_diff_get_stats` API which nicely formats stats for you. I went to add bar-graph scaling to the stats formatter and noticed that the `git_diff_stats` structure was holding on to all of the `git_patch` objects. Unfortunately, each of these objects keeps the full text of the diff in memory, so this is very expensive. I ended up modifying `git_diff_stats` to keep just the data that it needs to keep and allowed it to release the patches. Then, I added width scaling to the output on top of that. In making the diff example program match 'git diff' output, I ended up removing an newline from the sumamry output which I then had to compensate for in the email formatting to match the expectations. Lastly, I went through and refactored the tests to use a couple of helper functions and reduce the overall amount of code there.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| blob.c | Loading commit data... | |
| diff_helpers.c | Loading commit data... | |
| diff_helpers.h | Loading commit data... | |
| diffiter.c | Loading commit data... | |
| drivers.c | Loading commit data... | |
| format_email.c | Loading commit data... | |
| index.c | Loading commit data... | |
| iterator.c | Loading commit data... | |
| notify.c | Loading commit data... | |
| patch.c | Loading commit data... | |
| pathspec.c | Loading commit data... | |
| rename.c | Loading commit data... | |
| stats.c | Loading commit data... | |
| submodules.c | Loading commit data... | |
| tree.c | Loading commit data... | |
| workdir.c | Loading commit data... |