Thread (10 messages) 10 messages, 3 authors, 2018-03-28

Re: [PATCH v2 3/6] stash: convert apply to builtin

From: Christian Couder <hidden>
Date: 2018-03-26 07:05:49

On Mon, Mar 26, 2018 at 3:14 AM, Joel Teichroeb [off-list ref] wrote:
Signed-off-by: Joel Teichroeb <redacted>
The commit message in this patch and the following ones could be a bit
more verbose. It could at least tell that the end goal is to convert
git-stash.sh to a C builtin.
+static void destroy_stash_info(struct stash_info *info)
+{
+       strbuf_release(&info->revision);
+}
Not sure if "destroy" is the right word in the function name. I would
have used "free" instead.
+static int get_stash_info(struct stash_info *info, int argc, const char **argv)
+{
+       struct strbuf w_commit_rev = STRBUF_INIT;
+       struct strbuf b_commit_rev = STRBUF_INIT;
+       struct strbuf w_tree_rev = STRBUF_INIT;
+       struct strbuf b_tree_rev = STRBUF_INIT;
+       struct strbuf i_tree_rev = STRBUF_INIT;
+       struct strbuf u_tree_rev = STRBUF_INIT;
+       struct strbuf symbolic = STRBUF_INIT;
+       struct strbuf out = STRBUF_INIT;
+       int ret;
+       const char *revision;
+       const char *commit = NULL;
+       char *end_of_rev;
+       info->is_stash_ref = 0;
+
+       if (argc > 1) {
+               int i;
+               fprintf(stderr, _("Too many revisions specified:"));
+               for (i = 0; i < argc; ++i) {
+                       fprintf(stderr, " '%s'", argv[i]);
+               }
The brackets are not needed.
+               fprintf(stderr, "\n");
+
+               return -1;
+       }
+
+       if (argc == 1)
+               commit = argv[0];
+
+       strbuf_init(&info->revision, 0);
+       if (commit == NULL) {
+               if (have_stash()) {
+                       destroy_stash_info(info);
+                       return error(_("No stash entries found."));
+               }
+
+               strbuf_addf(&info->revision, "%s@{0}", ref_stash);
+       } else if (strspn(commit, "0123456789") == strlen(commit)) {
+               strbuf_addf(&info->revision, "%s@{%s}", ref_stash, commit);
+       } else {
+               strbuf_addstr(&info->revision, commit);
+       }
+
+       revision = info->revision.buf;
+
+       strbuf_addf(&w_commit_rev, "%s", revision);
Maybe use strbuf_addstr()?
+
+
Spurious new line.

[...]
+static int diff_cached_index(struct strbuf *out, struct object_id *c_tree)
+{
+       struct child_process cp = CHILD_PROCESS_INIT;
+    const char *c_tree_hex = oid_to_hex(c_tree);
Indent looks weird.
+
+       cp.git_cmd = 1;
+       argv_array_pushl(&cp.args, "diff-index", "--cached", "--name-only", "--diff-filter=A", NULL);
+       argv_array_push(&cp.args, c_tree_hex);
+       return pipe_command(&cp, NULL, 0, out, 0, NULL, 0);
+}
+
+static int update_index(struct strbuf *out) {
The opening bracket should be on its own line.
+       struct child_process cp = CHILD_PROCESS_INIT;
Maybe add a new line here to be more consistent with other such functions.
+       cp.git_cmd = 1;
+       argv_array_pushl(&cp.args, "update-index", "--add", "--stdin", NULL);
+       return pipe_command(&cp, out->buf, out->len, NULL, 0, NULL, 0);
+}
[...]
+       if (info->has_u) {
+               struct child_process cp = CHILD_PROCESS_INIT;
+               struct child_process cp2 = CHILD_PROCESS_INIT;
+               int res;
+
+               cp.git_cmd = 1;
+               argv_array_push(&cp.args, "read-tree");
+               argv_array_push(&cp.args, oid_to_hex(&info->u_tree));
+               argv_array_pushf(&cp.env_array, "GIT_INDEX_FILE=%s", stash_index_path);
+
+               cp2.git_cmd = 1;
+               argv_array_pushl(&cp2.args, "checkout-index", "--all", NULL);
+               argv_array_pushf(&cp2.env_array, "GIT_INDEX_FILE=%s", stash_index_path);
Maybe use small functions for the above read-tree and checkout-index.
+               res = run_command(&cp) || run_command(&cp2);
+               remove_path(stash_index_path);
+               if (res)
+                       return error(_("Could not restore untracked files from stash"));
+       }
Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help