git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / Atom feed
0c30e43f0abf724a6998d8793a3f872324e68819 blob 5928 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
 
#ifndef SEQUENCER_H
#define SEQUENCER_H

#include "cache.h"
#include "strbuf.h"

struct commit;
struct repository;

const char *git_path_commit_editmsg(void);
const char *git_path_seq_dir(void);
const char *rebase_path_todo(void);

#define APPEND_SIGNOFF_DEDUP (1u << 0)

enum replay_action {
	REPLAY_REVERT,
	REPLAY_PICK,
	REPLAY_INTERACTIVE_REBASE
};

enum commit_msg_cleanup_mode {
	COMMIT_MSG_CLEANUP_SPACE,
	COMMIT_MSG_CLEANUP_NONE,
	COMMIT_MSG_CLEANUP_SCISSORS,
	COMMIT_MSG_CLEANUP_ALL
};

struct replay_opts {
	enum replay_action action;

	/* Boolean options */
	int edit;
	int record_origin;
	int no_commit;
	int signoff;
	int allow_ff;
	int allow_rerere_auto;
	int allow_empty;
	int allow_empty_message;
	int keep_redundant_commits;
	int verbose;

	int mainline;

	char *gpg_sign;
	enum commit_msg_cleanup_mode default_msg_cleanup;

	/* Merge strategy */
	char *strategy;
	char **xopts;
	size_t xopts_nr, xopts_alloc;

	/* Used by fixup/squash */
	struct strbuf current_fixups;
	int current_fixup_count;

	/* placeholder commit for -i --root */
	struct object_id squash_onto;
	int have_squash_onto;

	/* Only used by REPLAY_NONE */
	struct rev_info *revs;
};
#define REPLAY_OPTS_INIT { .action = -1, .current_fixups = STRBUF_INIT }

int write_message(const void *buf, size_t len, const char *filename,
		  int append_eol);

/*
 * Note that ordering matters in this enum. Not only must it match the mapping
 * of todo_command_info (in sequencer.c), it is also divided into several
 * sections that matter.  When adding new commands, make sure you add it in the
 * right section.
 */
enum todo_command {
	/* commands that handle commits */
	TODO_PICK = 0,
	TODO_REVERT,
	TODO_EDIT,
	TODO_REWORD,
	TODO_FIXUP,
	TODO_SQUASH,
	/* commands that do something else than handling a single commit */
	TODO_EXEC,
	TODO_BREAK,
	TODO_LABEL,
	TODO_RESET,
	TODO_MERGE,
	/* commands that do nothing but are counted for reporting progress */
	TODO_NOOP,
	TODO_DROP,
	/* comments (not counted for reporting progress) */
	TODO_COMMENT
};

struct todo_item {
	enum todo_command command;
	struct commit *commit;
	unsigned int flags;
	int arg_len;
	/* The offset of the command and its argument in the strbuf */
	size_t offset_in_buf, arg_offset;
};

struct todo_list {
	struct strbuf buf;
	struct todo_item *items;
	int nr, alloc, current;
	int done_nr, total_nr;
	struct stat_data stat;
};

#define TODO_LIST_INIT { STRBUF_INIT }

int todo_list_parse_insn_buffer(struct repository *r, char *buf,
				struct todo_list *todo_list);
int todo_list_write_to_file(struct repository *r, struct todo_list *todo_list,
			    const char *file, const char *shortrevisions,
			    const char *shortonto, int num, unsigned flags);
void todo_list_release(struct todo_list *todo_list);
const char *todo_item_get_arg(struct todo_list *todo_list,
			      struct todo_item *item);

/* Call this to setup defaults before parsing command line options */
void sequencer_init_config(struct replay_opts *opts);
int sequencer_pick_revisions(struct repository *repo,
			     struct replay_opts *opts);
int sequencer_continue(struct repository *repo, struct replay_opts *opts);
int sequencer_rollback(struct repository *repo, struct replay_opts *opts);
int sequencer_remove_state(struct replay_opts *opts);

#define TODO_LIST_KEEP_EMPTY (1U << 0)
#define TODO_LIST_SHORTEN_IDS (1U << 1)
#define TODO_LIST_ABBREVIATE_CMDS (1U << 2)
#define TODO_LIST_REBASE_MERGES (1U << 3)
/*
 * When rebasing merges, commits that do have the base commit as ancestor
 * ("cousins") are *not* rebased onto the new base by default. If those
 * commits should be rebased onto the new base, this flag needs to be passed.
 */
#define TODO_LIST_REBASE_COUSINS (1U << 4)
#define TODO_LIST_APPEND_TODO_HELP (1U << 5)

int sequencer_make_script(struct repository *r, struct strbuf *out, int argc,
			  const char **argv, unsigned flags);

int sequencer_add_exec_commands(struct repository *r,
				struct string_list *commands);
int transform_todo_file(struct repository *r, unsigned flags);
int check_todo_list_from_file(struct repository *r);
int complete_action(struct repository *r, struct replay_opts *opts, unsigned flags,
		    const char *shortrevisions, const char *onto_name,
		    const char *onto, const char *orig_head, struct string_list *commands,
		    unsigned autosquash, struct todo_list *todo_list);
int rearrange_squash_in_todo_file(struct repository *r);

extern const char sign_off_header[];

/*
 * Append a signoff to the commit message in "msgbuf". The ignore_footer
 * parameter specifies the number of bytes at the end of msgbuf that should
 * not be considered at all. I.e., they are not checked for existing trailers,
 * and the new signoff will be spliced into the buffer before those bytes.
 */
void append_signoff(struct strbuf *msgbuf, size_t ignore_footer, unsigned flag);

void append_conflicts_hint(struct index_state *istate, struct strbuf *msgbuf);
int message_is_empty(const struct strbuf *sb,
		     enum commit_msg_cleanup_mode cleanup_mode);
int template_untouched(const struct strbuf *sb, const char *template_file,
		       enum commit_msg_cleanup_mode cleanup_mode);
int update_head_with_reflog(const struct commit *old_head,
			    const struct object_id *new_head,
			    const char *action, const struct strbuf *msg,
			    struct strbuf *err);
void commit_post_rewrite(const struct commit *current_head,
			 const struct object_id *new_head);

int prepare_branch_to_be_rebased(struct replay_opts *opts, const char *commit);

#define SUMMARY_INITIAL_COMMIT   (1 << 0)
#define SUMMARY_SHOW_AUTHOR_DATE (1 << 1)
void print_commit_summary(struct repository *repo,
			  const char *prefix,
			  const struct object_id *oid,
			  unsigned int flags);
#endif

void parse_strategy_opts(struct replay_opts *opts, char *raw_opts);
int write_basic_state(struct replay_opts *opts, const char *head_name,
		      const char *onto, const char *orig_head);
debug log:

solving 0c30e43f0a ...
found 0c30e43f0a in https://public-inbox.org/git/20190129150159.10588-11-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-11-alban.gruin@gmail.com/
found 9b8edd7df6 in https://public-inbox.org/git/20190129150159.10588-10-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-10-alban.gruin@gmail.com/
found c7bb38d6df in https://public-inbox.org/git/20190129150159.10588-9-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-9-alban.gruin@gmail.com/
found e79f03e213 in https://public-inbox.org/git/20190129150159.10588-8-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-8-alban.gruin@gmail.com/
found 1de97f188d in https://public-inbox.org/git/20190129150159.10588-7-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-7-alban.gruin@gmail.com/
found dc3d8f76f7 in https://public-inbox.org/git/20190129150159.10588-6-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-6-alban.gruin@gmail.com/
found 35472c137b in https://public-inbox.org/git/20190129150159.10588-5-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-5-alban.gruin@gmail.com/
found cdb9ed7a2d in https://public-inbox.org/git/20190129150159.10588-4-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-4-alban.gruin@gmail.com/
found 7dc4d8946b in https://public-inbox.org/git/20190129150159.10588-3-alban.gruin@gmail.com/
	https://public-inbox.org/git/20190123205821.27459-3-alban.gruin@gmail.com/
	https://public-inbox.org/git/20181229160413.19333-3-alban.gruin@gmail.com/
found d2c18edd3a in https://80x24.org/mirrors/git.git
preparing index
index prepared:
100644 d2c18edd3ae150b665dd4ecc0c104d30d09a1211	sequencer.h

applying [1/19] https://public-inbox.org/git/20190129150159.10588-3-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index d2c18edd3a..7dc4d8946b 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-3-alban.gruin@gmail.com/ for 7dc4d8946b
skipping https://public-inbox.org/git/20181229160413.19333-3-alban.gruin@gmail.com/ for 7dc4d8946b
index at:
100644 7dc4d8946b7fe06178491907c7c6622e349f848a	sequencer.h

applying [2/19] https://public-inbox.org/git/20190129150159.10588-4-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index 7dc4d8946b..cdb9ed7a2d 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-4-alban.gruin@gmail.com/ for cdb9ed7a2d
index at:
100644 cdb9ed7a2d459e39ce5d019231e8c2cfd1bb1838	sequencer.h

applying [3/19] https://public-inbox.org/git/20190129150159.10588-5-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index cdb9ed7a2d..35472c137b 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-5-alban.gruin@gmail.com/ for 35472c137b
index at:
100644 35472c137bbf9c7627ccccd5614047a06df63782	sequencer.h

applying [4/19] https://public-inbox.org/git/20190129150159.10588-6-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index 35472c137b..dc3d8f76f7 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-6-alban.gruin@gmail.com/ for dc3d8f76f7
index at:
100644 dc3d8f76f7fd1174ad05fd0c38c82630b47839a4	sequencer.h

applying [5/19] https://public-inbox.org/git/20190129150159.10588-7-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index dc3d8f76f7..1de97f188d 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-7-alban.gruin@gmail.com/ for 1de97f188d
index at:
100644 1de97f188d27a76888d9494ffac1a9e31faa36ae	sequencer.h

applying [6/19] https://public-inbox.org/git/20190129150159.10588-8-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index 1de97f188d..e79f03e213 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-8-alban.gruin@gmail.com/ for e79f03e213
index at:
100644 e79f03e213a0ddbf3a7ba8083b6e5ba64bff56b7	sequencer.h

applying [7/19] https://public-inbox.org/git/20190129150159.10588-9-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index e79f03e213..c7bb38d6df 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-9-alban.gruin@gmail.com/ for c7bb38d6df
index at:
100644 c7bb38d6df60ff08afe167a00c5045af155cf6d1	sequencer.h

applying [8/19] https://public-inbox.org/git/20190129150159.10588-10-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index c7bb38d6df..9b8edd7df6 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-10-alban.gruin@gmail.com/ for 9b8edd7df6
index at:
100644 9b8edd7df67bbdb79aac9b635ba479b261625859	sequencer.h

applying [9/19] https://public-inbox.org/git/20190129150159.10588-11-alban.gruin@gmail.com/
diff --git a/sequencer.h b/sequencer.h
index 9b8edd7df6..0c30e43f0a 100644

Checking patch sequencer.h...
Applied patch sequencer.h cleanly.

skipping https://public-inbox.org/git/20190123205821.27459-11-alban.gruin@gmail.com/ for 0c30e43f0a
index at:
100644 0c30e43f0abf724a6998d8793a3f872324e68819	sequencer.h

git@vger.kernel.org list mirror (unofficial, one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Example config snippet for mirrors

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.org/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git