Revision fdb70b16a006f82b65fb92995886a074c829f587 authored by Junio C Hamano on 11 October 2016, 21:21:17 UTC, committed by Junio C Hamano on 11 October 2016, 21:21:17 UTC
"git worktree", even though it used the default_abbrev setting that
ought to be affected by core.abbrev configuration variable, ignored
the variable setting.  The command has been taught to read the
default set of configuration variables to correct this.

* jc/worktree-config:
  worktree: honor configuration variables
2 parent s f7f0a87 + d49028e
Raw File
line-log.h
#ifndef LINE_LOG_H
#define LINE_LOG_H

#include "diffcore.h"

struct rev_info;
struct commit;

/* A range [start,end].  Lines are numbered starting at 0, and the
 * ranges include start but exclude end. */
struct range {
	long start, end;
};

/* A set of ranges.  The ranges must always be disjoint and sorted. */
struct range_set {
	int alloc, nr;
	struct range *ranges;
};

/* A diff, encoded as the set of pre- and post-image ranges where the
 * files differ. A pair of ranges corresponds to a hunk. */
struct diff_ranges {
	struct range_set parent;
	struct range_set target;
};

extern void range_set_init(struct range_set *, size_t prealloc);
extern void range_set_release(struct range_set *);
/* Range includes start; excludes end */
extern void range_set_append_unsafe(struct range_set *, long start, long end);
/* New range must begin at or after end of last added range */
extern void range_set_append(struct range_set *, long start, long end);
/*
 * In-place pass of sorting and merging the ranges in the range set,
 * to sort and make the ranges disjoint.
 */
extern void sort_and_merge_range_set(struct range_set *);

/* Linked list of interesting files and their associated ranges.  The
 * list must be kept sorted by path.
 *
 * For simplicity, even though this is highly redundant, each
 * line_log_data owns its 'path'.
 */
struct line_log_data {
	struct line_log_data *next;
	char *path;
	char status;
	struct range_set ranges;
	int arg_alloc, arg_nr;
	const char **args;
	struct diff_filepair *pair;
	struct diff_ranges diff;
};

extern void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args);

extern int line_log_filter(struct rev_info *rev);

extern int line_log_print(struct rev_info *rev, struct commit *commit);

#endif /* LINE_LOG_H */
back to top