Skip to content

Commit

Permalink
"needs update" considered harmful
Browse files Browse the repository at this point in the history
"git update-index --refresh", "git reset" and "git add --refresh" have
reported paths that have local modifications as "needs update" since the
beginning of git.

Although this is logically correct in that you need to update the index at
that path before you can commit that change, it is now becoming more and
more clear, especially with the continuous push for user friendliness
since 1.5.0 series, that the message is suboptimal.  After all, the change
may be something the user might want to get rid of, and "updating" would
be absolutely a wrong thing to do if that is the case.

I prepared two alternatives to solve this.  Both aim to reword the message
to more neutral "locally modified".

This patch is a more intrusive variant that changes the message for only
Porcelain commands ("add" and "reset") while keeping the plumbing
"update-index" intact.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Jul 21, 2008
1 parent 559e840 commit d14e740
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 4 deletions.
3 changes: 2 additions & 1 deletion builtin-add.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ static void refresh(int verbose, const char **pathspec)
seen = xcalloc(specs, 1);
if (read_cache() < 0)
die("index file corrupt");
refresh_index(&the_index, verbose ? 0 : REFRESH_QUIET, pathspec, seen);
refresh_index(&the_index, verbose ? REFRESH_SAY_CHANGED : REFRESH_QUIET,
pathspec, seen);
for (i = 0; i < specs; i++) {
if (!seen[i])
die("pathspec '%s' did not match any files", pathspec[i]);
Expand Down
2 changes: 1 addition & 1 deletion builtin-reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ static int update_index_refresh(int fd, struct lock_file *index_lock)

if (read_cache() < 0)
return error("Could not read index");
result = refresh_cache(0) ? 1 : 0;
result = refresh_cache(REFRESH_SAY_CHANGED) ? 1 : 0;
if (write_cache(fd, active_cache, active_nr) ||
commit_locked_index(index_lock))
return error ("Could not refresh index");
Expand Down
1 change: 1 addition & 0 deletions cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
#define REFRESH_QUIET 0x0004 /* be quiet about it */
#define REFRESH_IGNORE_MISSING 0x0008 /* ignore non-existent */
#define REFRESH_IGNORE_SUBMODULES 0x0010 /* ignore submodules */
#define REFRESH_SAY_CHANGED 0x0020 /* say "changed" not "needs update" */
extern int refresh_index(struct index_state *, unsigned int flags, const char **pathspec, char *seen);

struct lock_file {
Expand Down
5 changes: 4 additions & 1 deletion read-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -980,7 +980,10 @@ int refresh_index(struct index_state *istate, unsigned int flags, const char **p
int not_new = (flags & REFRESH_IGNORE_MISSING) != 0;
int ignore_submodules = (flags & REFRESH_IGNORE_SUBMODULES) != 0;
unsigned int options = really ? CE_MATCH_IGNORE_VALID : 0;
const char *needs_update_message;

needs_update_message = ((flags & REFRESH_SAY_CHANGED)
? "locally modified" : "needs update");
for (i = 0; i < istate->cache_nr; i++) {
struct cache_entry *ce, *new;
int cache_errno = 0;
Expand Down Expand Up @@ -1019,7 +1022,7 @@ int refresh_index(struct index_state *istate, unsigned int flags, const char **p
}
if (quiet)
continue;
printf("%s: needs update\n", ce->name);
printf("%s: %s\n", ce->name, needs_update_message);
has_errors = 1;
continue;
}
Expand Down
2 changes: 1 addition & 1 deletion t/t7102-reset.sh
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ test_expect_success 'resetting an unmodified path is a no-op' '
'

cat > expect << EOF
file2: needs update
file2: locally modified
EOF

test_expect_success '--mixed refreshes the index' '
Expand Down

0 comments on commit d14e740

Please sign in to comment.