Skip to content

Commit

Permalink
reset.c: move update_index_refresh() call out of read_from_tree()
Browse files Browse the repository at this point in the history
The final part of cmd_reset() essentially looks like:

  if (pathspec) {
    ...
    read_from_tree(...);
  } else {
    ...
    reset_index(...);
    update_index_refresh(...);
    ...
  }

where read_from_tree() internally also calls
update_index_refresh(). Move the call to update_index_refresh() out of
read_from_tree for symmetry with the 'else' block, making
read_from_tree() and reset_index() closer in functionality.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Martin von Zweigbergk authored and Junio C Hamano committed Jan 15, 2013
1 parent b489097 commit bf883f3
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions builtin/reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,27 +145,23 @@ static void update_index_from_diff(struct diff_queue_struct *q,
}
}

static int read_from_tree(const char **pathspec, unsigned char *tree_sha1,
int refresh_flags)
static int read_from_tree(const char **pathspec, unsigned char *tree_sha1)
{
struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
int index_fd;
struct diff_options opt;

memset(&opt, 0, sizeof(opt));
diff_tree_setup_paths(pathspec, &opt);
opt.output_format = DIFF_FORMAT_CALLBACK;
opt.format_callback = update_index_from_diff;

index_fd = hold_locked_index(lock, 1);
read_cache();
if (do_diff_cache(tree_sha1, &opt))
return 1;
diffcore_std(&opt);
diff_flush(&opt);
diff_tree_release_paths(&opt);

return update_index_refresh(index_fd, lock, refresh_flags);
return 0;
}

static void set_reflog_message(struct strbuf *sb, const char *action,
Expand Down Expand Up @@ -322,9 +318,13 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
die(_("%s reset is not allowed in a bare repository"),
_(reset_type_names[reset_type]));

if (pathspec)
return read_from_tree(pathspec, sha1,
quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN);
if (pathspec) {
struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
int index_fd = hold_locked_index(lock, 1);
return read_from_tree(pathspec, sha1) ||
update_index_refresh(index_fd, lock,
quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN);
}

/* Soft reset does not touch the index file nor the working tree
* at all, but requires them in a good order. Other resets reset
Expand Down

0 comments on commit bf883f3

Please sign in to comment.