Re: [PATCH v3 04/12] sequencer: introduce new commands to reset the revision
From: Eric Sunshine <hidden>
Date: 2018-02-12 19:26:59
On Sat, Feb 10, 2018 at 7:10 PM, Johannes Schindelin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
[...] This commit implements the commands to label, and to reset to, given revisions. The syntax is: label <name> reset <name> [...] Signed-off-by: Johannes Schindelin <redacted> ---diff --git a/sequencer.c b/sequencer.c@@ -1922,6 +1951,151 @@ static int do_exec(const char *command_line) +static int safe_append(const char *filename, const char *fmt, ...) +{ + [...] + if (write_in_full(fd, buf.buf, buf.len) < 0) { + error_errno(_("could not write to '%s'"), filename); + rollback_lock_file(&lock);
strbuf_release(&buf);
quoted hunk ↗ jump to hunk
+ return -1; + } + if (commit_lock_file(&lock) < 0) { + rollback_lock_file(&lock);
strbuf_release(&buf);
quoted hunk ↗ jump to hunk
+ return error(_("failed to finalize '%s'"), filename); + } +
strbuf_release(&buf);
quoted hunk ↗ jump to hunk
+ return 0; +} + +static int do_reset(const char *name, int len, struct replay_opts *opts) +{ + [...] + unpack_tree_opts.reset = 1; + + if (read_cache_unmerged())
rollback_lock_file(&lock); strbuf_release(&ref_name);
quoted hunk ↗ jump to hunk
+ return error_resolve_conflict(_(action_name(opts))); + + if (!fill_tree_descriptor(&desc, &oid)) { + error(_("failed to find tree of %s"), oid_to_hex(&oid)); + rollback_lock_file(&lock); + free((void *)desc.buffer); + strbuf_release(&ref_name); + return -1; + }