Denton Liu
|
186dbeed
|
rebase: use read_oneliner()
|
Denton Liu
|
06ebea5c
|
rebase: generify reset_head()
|
Denton Liu
|
e71223c6
|
rebase: use apply_autostash() from sequencer.c
|
Denton Liu
|
1e1ef305
|
sequencer: extract perform_autostash() from rebase
|
Denton Liu
|
448bea61
|
sequencer: make apply_rebase() accept a path
|
Denton Liu
|
fa717471
|
sequencer: use file strbuf for read_oneliner()
|
Denton Liu
|
b3137f2e
|
reset: extract reset_head() from rebase
|
Elijah Newren
|
81f5bc1c
|
rebase, sequencer: remove the broken GIT_QUIET handling
|
Elijah Newren
|
91e0ed22
|
rebase (interactive-backend): fix handling of commits that become empty
|
Elijah Newren
|
8f10f8a0
|
rebase: make the backend configurable via config setting
|
Elijah Newren
|
8ef6c12e
|
rebase (interactive-backend): make --keep-empty the default
|
Emily Shaffer
|
d1903342
|
grep: support the --pathspec-from-file option
|
Emily Shaffer
|
02225408
|
fetch: emphasize failure during submodule fetch
|
Johannes Schindelin
|
43590261
|
rebase -i: re-fix short SHA-1 collision
|
Jonathan Nieder
|
ee70c128
|
index: offer advice for unknown index extensions
|
Josh Steadmon
|
6da1f1a9
|
protocol: advertise multiple supported versions
|
Junio C Hamano
|
76318f96
|
Merge branch 'js/rebase-i-with-colliding-hash' into pu
|
Kevin Willford
|
56c69100
|
fsmonitor: change last update timestamp on the index_state to opaque token
|
Kevin Willford
|
8da2c576
|
fsmonitor: handle version 2 of the hooks that will use opaque token
|
Matheus Tavares
|
31877c9a
|
object-store: allow threaded access to object reading
|
Phillip Wood
|
430b75f7
|
commit: give correct advice for empty commit during a rebase
|
Phillip Wood
|
012ecfce
|
rebase: fix advice when a fixup creates an empty commit
|
94ac3c31
|
38
|
static int disable_bits(tcflag_t bits)
|
94ac3c31
|
49
|
t.c_lflag &= ~bits;
|
94ac3c31
|
59
|
static int disable_echo(void)
|
94ac3c31
|
61
|
return disable_bits(ECHO);
|
a5e46e6b
|
64
|
static int enable_non_canonical(void)
|
a5e46e6b
|
66
|
return disable_bits(ICANON | ECHO);
|
12acdf57
|
255
|
static int sequence_entry_cmp(const void *hashmap_cmp_fn_data,
|
12acdf57
|
260
|
return strcmp(e1->sequence, keydata ? keydata : e2->sequence);
|
12acdf57
|
263
|
static int is_known_escape_sequence(const char *sequence)
|
12acdf57
|
268
|
if (!initialized) {
|
12acdf57
|
269
|
struct child_process cp = CHILD_PROCESS_INIT;
|
12acdf57
|
270
|
struct strbuf buf = STRBUF_INIT;
|
12acdf57
|
273
|
hashmap_init(&sequences, (hashmap_cmp_fn)sequence_entry_cmp,
|
12acdf57
|
276
|
argv_array_pushl(&cp.args, "infocmp", "-L", "-1", NULL);
|
12acdf57
|
277
|
if (pipe_command(&cp, NULL, 0, &buf, 0, NULL, 0))
|
12acdf57
|
278
|
strbuf_setlen(&buf, 0);
|
12acdf57
|
280
|
for (eol = p = buf.buf; *p; p = eol + 1) {
|
12acdf57
|
281
|
p = strchr(p, '=');
|
12acdf57
|
282
|
if (!p)
|
12acdf57
|
283
|
break;
|
12acdf57
|
284
|
p++;
|
12acdf57
|
285
|
eol = strchrnul(p, '\n');
|
12acdf57
|
287
|
if (starts_with(p, "\\E")) {
|
12acdf57
|
288
|
char *comma = memchr(p, ',', eol - p);
|
12acdf57
|
291
|
p[0] = '^';
|
12acdf57
|
292
|
p[1] = '[';
|
12acdf57
|
293
|
FLEX_ALLOC_MEM(e, sequence, p, comma - p);
|
12acdf57
|
294
|
hashmap_entry_init(&e->entry,
|
12acdf57
|
295
|
strhash(e->sequence));
|
12acdf57
|
296
|
hashmap_add(&sequences, &e->entry);
|
12acdf57
|
298
|
if (!*eol)
|
12acdf57
|
299
|
break;
|
12acdf57
|
301
|
initialized = 1;
|
12acdf57
|
304
|
return !!hashmap_get_from_hash(&sequences, strhash(sequence), sequence);
|
a5e46e6b
|
307
|
int read_key_without_echo(struct strbuf *buf)
|
a5e46e6b
|
312
|
if (warning_displayed || enable_non_canonical() < 0) {
|
a5e46e6b
|
313
|
if (!warning_displayed) {
|
a5e46e6b
|
316
|
warning_displayed = 1;
|
a5e46e6b
|
319
|
return strbuf_getline(buf, stdin);
|
a5e46e6b
|
322
|
strbuf_reset(buf);
|
a5e46e6b
|
323
|
ch = getchar();
|
a5e46e6b
|
324
|
if (ch == EOF) {
|
a5e46e6b
|
325
|
restore_term();
|
a5e46e6b
|
326
|
return EOF;
|
a5e46e6b
|
328
|
strbuf_addch(buf, ch);
|
e118f063
|
330
|
if (ch == '\033' /* ESC */) {
|
e118f063
|
338
|
strbuf_splice(buf, buf->len - 1, 1, "^[", 2);
|
12acdf57
|
345
|
while (!is_known_escape_sequence(buf->buf)) {
|
e118f063
|
346
|
struct pollfd pfd = { .fd = 0, .events = POLLIN };
|
e118f063
|
348
|
if (poll(&pfd, 1, 500) < 1)
|
e118f063
|
349
|
break;
|
e118f063
|
351
|
ch = getchar();
|
e118f063
|
352
|
if (ch == EOF)
|
e118f063
|
353
|
return 0;
|
e118f063
|
354
|
strbuf_addch(buf, ch);
|
a5e46e6b
|
358
|
restore_term();
|
a5e46e6b
|
359
|
return 0;
|
Alban Gruin
|
5ef50d63
|
rebase-interactive: warn if commit is dropped with `rebase --edit-todo'
|
Alban Gruin
|
0d50cf5e
|
sequencer: move check_todo_list_from_file() to rebase-interactive.c
|
Alex Torok
|
fed842f0
|
rebase: fix --fork-point with short refname
|
Hans Jerry Illikainen
|
54887b46
|
gpg-interface: add minTrustLevel as a configuration option
|
Jeff King
|
7cb9754e
|
pack-objects: introduce pack.allowPackReuse
|
Jeff King
|
7b143c16
|
pack-bitmap: introduce bitmap_walk_contains()
|
Jeff King
|
4f0bd8b9
|
pack-objects: improve partial packfile reuse
|
Johannes Schindelin
|
e118f063
|
built-in add -p: handle Escape sequences in interactive.singlekey mode
|
Johannes Schindelin
|
12acdf57
|
built-in add -p: handle Escape sequences more efficiently
|
Johannes Schindelin
|
a5e46e6b
|
terminal: add a new function to read a single keystroke
|
Johannes Schindelin
|
94ac3c31
|
terminal: make the code of disable_echo() reusable
|
Johannes Schindelin
|
180f48df
|
built-in add -p: support interactive.diffFilter
|
Johannes Schindelin
|
90a6bb98
|
legacy stash -p: respect the add.interactive.usebuiltin setting
|
Johannes Schindelin
|
d2a233cb
|
built-in add -p: prepare for patch modes other than "stage"
|
Johannes Schindelin
|
52628f94
|
built-in add -p: implement the "checkout" patch modes
|
Johannes Schindelin
|
04f816b1
|
built-in add -p: respect the `interactive.singlekey` config setting
|
Johannes Schindelin
|
6610e462
|
built-in stash: use the built-in `git add -p` if so configured
|
Martin Ågren
|
3bcdd852
|
builtin/config: extract `handle_value_regex()` from `get_value()`
|
Martin Ågren
|
3bf986d6
|
builtin/config: collect "value_regexp" data in a struct
|
Ralf Thielow
|
a4ffbbbb
|
submodule.c: mark more strings for translation
|