mirror of
https://github.com/git-for-windows/git.git
synced 2026-03-19 11:35:17 -05:00
The Perl script backing `git add -p` is used not only for that command, but also for `git stash -p`, `git reset -p` and `git checkout -p`. In preparation for teaching the C version of `git add -p` to support also the latter commands, let's abstract away what is "stage" specific into a dedicated data structure describing the differences between the patch modes. As we prepare for calling the built-in `git add -p` in `run_add_interactive()` via code paths that have not let `add_config()` do its work, we have to make sure to re-parse the config using that function in those cases. Finally, please note that the Perl version tries to make sure that the diffs are only generated for the modified files. This is not actually necessary, as the calls to Git's diff machinery already perform that work, and perform it well. This makes it unnecessary to port the `FILTER` field of the `%patch_modes` struct, as well as the `get_diff_reference()` function. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
43 lines
922 B
C
43 lines
922 B
C
#ifndef ADD_INTERACTIVE_H
|
|
#define ADD_INTERACTIVE_H
|
|
|
|
#include "color.h"
|
|
|
|
struct add_i_state {
|
|
struct repository *r;
|
|
int use_color;
|
|
char header_color[COLOR_MAXLEN];
|
|
char help_color[COLOR_MAXLEN];
|
|
char prompt_color[COLOR_MAXLEN];
|
|
char error_color[COLOR_MAXLEN];
|
|
char reset_color[COLOR_MAXLEN];
|
|
char fraginfo_color[COLOR_MAXLEN];
|
|
char context_color[COLOR_MAXLEN];
|
|
char file_old_color[COLOR_MAXLEN];
|
|
char file_new_color[COLOR_MAXLEN];
|
|
};
|
|
|
|
int init_add_i_state(struct repository *r, struct add_i_state *s);
|
|
|
|
enum color_add_i {
|
|
COLOR_HEADER = 0,
|
|
COLOR_HELP,
|
|
COLOR_PROMPT,
|
|
COLOR_ERROR,
|
|
COLOR_RESET,
|
|
};
|
|
const char *get_add_i_color(enum color_add_i ix);
|
|
|
|
struct repository;
|
|
struct pathspec;
|
|
int run_add_i(struct repository *r, const struct pathspec *ps);
|
|
|
|
enum add_p_mode {
|
|
ADD_P_STAGE,
|
|
};
|
|
|
|
int run_add_p(struct repository *r, enum add_p_mode mode,
|
|
const char *revision, const struct pathspec *ps);
|
|
|
|
#endif
|