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);
+ return -1;
+ }
+ if (commit_lock_file(&lock) < 0) {
+ rollback_lock_file(&lock);strbuf_release(&buf);
+ return error(_("failed to finalize '%s'"), filename);
+ }
+strbuf_release(&buf);
+ 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);
+ 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;
+ }