Skip to content

Commit 6bd396b

Browse files
committed
Merge branch 'ot/pretty'
Code clean-up. * ot/pretty: format: create docs for pretty.h format: create pretty.h file
2 parents 00c4d2b + d0e6326 commit 6bd396b

File tree

6 files changed

+136
-84
lines changed

6 files changed

+136
-84
lines changed

builtin/notes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include "builtin.h"
1313
#include "notes.h"
1414
#include "blob.h"
15-
#include "commit.h"
15+
#include "pretty.h"
1616
#include "refs.h"
1717
#include "exec_cmd.h"
1818
#include "run-command.h"

builtin/reset.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include "lockfile.h"
1313
#include "tag.h"
1414
#include "object.h"
15-
#include "commit.h"
15+
#include "pretty.h"
1616
#include "run-command.h"
1717
#include "refs.h"
1818
#include "diff.h"

builtin/show-branch.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "cache.h"
22
#include "config.h"
3-
#include "commit.h"
3+
#include "pretty.h"
44
#include "refs.h"
55
#include "builtin.h"
66
#include "color.h"

commit.h

Lines changed: 1 addition & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "decorate.h"
88
#include "gpg-interface.h"
99
#include "string-list.h"
10+
#include "pretty.h"
1011

1112
struct commit_list {
1213
struct commit *item;
@@ -121,93 +122,13 @@ struct commit_list *copy_commit_list(struct commit_list *list);
121122

122123
void free_commit_list(struct commit_list *list);
123124

124-
/* Commit formats */
125-
enum cmit_fmt {
126-
CMIT_FMT_RAW,
127-
CMIT_FMT_MEDIUM,
128-
CMIT_FMT_DEFAULT = CMIT_FMT_MEDIUM,
129-
CMIT_FMT_SHORT,
130-
CMIT_FMT_FULL,
131-
CMIT_FMT_FULLER,
132-
CMIT_FMT_ONELINE,
133-
CMIT_FMT_EMAIL,
134-
CMIT_FMT_MBOXRD,
135-
CMIT_FMT_USERFORMAT,
136-
137-
CMIT_FMT_UNSPECIFIED
138-
};
139-
140-
static inline int cmit_fmt_is_mail(enum cmit_fmt fmt)
141-
{
142-
return (fmt == CMIT_FMT_EMAIL || fmt == CMIT_FMT_MBOXRD);
143-
}
144-
145125
struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
146126

147-
struct pretty_print_context {
148-
/*
149-
* Callers should tweak these to change the behavior of pp_* functions.
150-
*/
151-
enum cmit_fmt fmt;
152-
int abbrev;
153-
const char *after_subject;
154-
int preserve_subject;
155-
struct date_mode date_mode;
156-
unsigned date_mode_explicit:1;
157-
int print_email_subject;
158-
int expand_tabs_in_log;
159-
int need_8bit_cte;
160-
char *notes_message;
161-
struct reflog_walk_info *reflog_info;
162-
struct rev_info *rev;
163-
const char *output_encoding;
164-
struct string_list *mailmap;
165-
int color;
166-
struct ident_split *from_ident;
167-
168-
/*
169-
* Fields below here are manipulated internally by pp_* functions and
170-
* should not be counted on by callers.
171-
*/
172-
struct string_list in_body_headers;
173-
int graph_width;
174-
};
175-
176-
struct userformat_want {
177-
unsigned notes:1;
178-
};
179-
180127
extern int has_non_ascii(const char *text);
181128
extern const char *logmsg_reencode(const struct commit *commit,
182129
char **commit_encoding,
183130
const char *output_encoding);
184-
extern void get_commit_format(const char *arg, struct rev_info *);
185-
extern const char *format_subject(struct strbuf *sb, const char *msg,
186-
const char *line_separator);
187-
extern void userformat_find_requirements(const char *fmt, struct userformat_want *w);
188-
extern int commit_format_is_empty(enum cmit_fmt);
189131
extern const char *skip_blank_lines(const char *msg);
190-
extern void format_commit_message(const struct commit *commit,
191-
const char *format, struct strbuf *sb,
192-
const struct pretty_print_context *context);
193-
extern void pretty_print_commit(struct pretty_print_context *pp,
194-
const struct commit *commit,
195-
struct strbuf *sb);
196-
extern void pp_commit_easy(enum cmit_fmt fmt, const struct commit *commit,
197-
struct strbuf *sb);
198-
void pp_user_info(struct pretty_print_context *pp,
199-
const char *what, struct strbuf *sb,
200-
const char *line, const char *encoding);
201-
void pp_title_line(struct pretty_print_context *pp,
202-
const char **msg_p,
203-
struct strbuf *sb,
204-
const char *encoding,
205-
int need_8bit_cte);
206-
void pp_remainder(struct pretty_print_context *pp,
207-
const char **msg_p,
208-
struct strbuf *sb,
209-
int indent);
210-
211132

212133
/** Removes the first commit from a list sorted by date, and adds all
213134
* of its parents.

pretty.h

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
#ifndef PRETTY_H
2+
#define PRETTY_H
3+
4+
struct commit;
5+
6+
/* Commit formats */
7+
enum cmit_fmt {
8+
CMIT_FMT_RAW,
9+
CMIT_FMT_MEDIUM,
10+
CMIT_FMT_DEFAULT = CMIT_FMT_MEDIUM,
11+
CMIT_FMT_SHORT,
12+
CMIT_FMT_FULL,
13+
CMIT_FMT_FULLER,
14+
CMIT_FMT_ONELINE,
15+
CMIT_FMT_EMAIL,
16+
CMIT_FMT_MBOXRD,
17+
CMIT_FMT_USERFORMAT,
18+
19+
CMIT_FMT_UNSPECIFIED
20+
};
21+
22+
struct pretty_print_context {
23+
/*
24+
* Callers should tweak these to change the behavior of pp_* functions.
25+
*/
26+
enum cmit_fmt fmt;
27+
int abbrev;
28+
const char *after_subject;
29+
int preserve_subject;
30+
struct date_mode date_mode;
31+
unsigned date_mode_explicit:1;
32+
int print_email_subject;
33+
int expand_tabs_in_log;
34+
int need_8bit_cte;
35+
char *notes_message;
36+
struct reflog_walk_info *reflog_info;
37+
struct rev_info *rev;
38+
const char *output_encoding;
39+
struct string_list *mailmap;
40+
int color;
41+
struct ident_split *from_ident;
42+
43+
/*
44+
* Fields below here are manipulated internally by pp_* functions and
45+
* should not be counted on by callers.
46+
*/
47+
struct string_list in_body_headers;
48+
int graph_width;
49+
};
50+
51+
/* Check whether commit format is mail. */
52+
static inline int cmit_fmt_is_mail(enum cmit_fmt fmt)
53+
{
54+
return (fmt == CMIT_FMT_EMAIL || fmt == CMIT_FMT_MBOXRD);
55+
}
56+
57+
struct userformat_want {
58+
unsigned notes:1;
59+
};
60+
61+
/* Set the flag "w->notes" if there is placeholder %N in "fmt". */
62+
void userformat_find_requirements(const char *fmt, struct userformat_want *w);
63+
64+
/*
65+
* Shortcut for invoking pretty_print_commit if we do not have any context.
66+
* Context would be set empty except "fmt".
67+
*/
68+
void pp_commit_easy(enum cmit_fmt fmt, const struct commit *commit,
69+
struct strbuf *sb);
70+
71+
/*
72+
* Get information about user and date from "line", format it and
73+
* put it into "sb".
74+
* Format of "line" must be readable for split_ident_line function.
75+
* The resulting format is "what: name <email> date".
76+
*/
77+
void pp_user_info(struct pretty_print_context *pp, const char *what,
78+
struct strbuf *sb, const char *line,
79+
const char *encoding);
80+
81+
/*
82+
* Format title line of commit message taken from "msg_p" and
83+
* put it into "sb".
84+
* First line of "msg_p" is also affected.
85+
*/
86+
void pp_title_line(struct pretty_print_context *pp, const char **msg_p,
87+
struct strbuf *sb, const char *encoding,
88+
int need_8bit_cte);
89+
90+
/*
91+
* Get current state of commit message from "msg_p" and continue formatting
92+
* by adding indentation and '>' signs. Put result into "sb".
93+
*/
94+
void pp_remainder(struct pretty_print_context *pp, const char **msg_p,
95+
struct strbuf *sb, int indent);
96+
97+
/*
98+
* Create a text message about commit using given "format" and "context".
99+
* Put the result to "sb".
100+
* Please use this function for custom formats.
101+
*/
102+
void format_commit_message(const struct commit *commit,
103+
const char *format, struct strbuf *sb,
104+
const struct pretty_print_context *context);
105+
106+
/*
107+
* Parse given arguments from "arg", check it for correctness and
108+
* fill struct rev_info.
109+
*/
110+
void get_commit_format(const char *arg, struct rev_info *);
111+
112+
/*
113+
* Make a commit message with all rules from given "pp"
114+
* and put it into "sb".
115+
* Please use this function if you have a context (candidate for "pp").
116+
*/
117+
void pretty_print_commit(struct pretty_print_context *pp,
118+
const struct commit *commit,
119+
struct strbuf *sb);
120+
121+
/*
122+
* Change line breaks in "msg" to "line_separator" and put it into "sb".
123+
* Return "msg" itself.
124+
*/
125+
const char *format_subject(struct strbuf *sb, const char *msg,
126+
const char *line_separator);
127+
128+
/* Check if "cmit_fmt" will produce an empty output. */
129+
int commit_format_is_empty(enum cmit_fmt);
130+
131+
#endif /* PRETTY_H */

revision.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "parse-options.h"
55
#include "grep.h"
66
#include "notes.h"
7-
#include "commit.h"
7+
#include "pretty.h"
88
#include "diff.h"
99

1010
/* Remember to update object flag allocation in object.h */

0 commit comments

Comments
 (0)