Junio C Hamano <gitster@xxxxxxxxx> writes: > Matthieu Moy <Matthieu.Moy@xxxxxxx> writes: > >> I'm also concerned about the possibility of stash/unstash to fail: >> that means the user has to deal with two kinds of conflicts (rebase >> can conflict, unstash can also), which can be confusing. > > Unstash should be invoked automatically _only_ after rebase > completes, so I do not forsee such confusion. Well, if rebase itself conflicts, it will stop and tell you about conflicts, then you'll have to "rebase --continue". If unstash fails, you'll have to resolve the conflicts, and probably do "commit", or continue working afterwards. You don't have to deal with both at the same time, but both do exist, and they have to be taken care of differently. For an advanced user with good understanding of the flow, that's OK, but I'm still afraid of the confusion for not-so-advanced users. But that's not a strong argument against auto-stash, just one downside. > But the trouble I have with the auto unstashing is more at the > conceptual and workflow level. You start rebasing a branch, and > your work tree is dirty. What branch should the local > modification belong to? You're in a better position than me to juge on that point. > # The tree must be really really clean. > -git update-index --refresh || exit > +o=$(git update-index -q --refresh) || { > + printf "cannot rebase: the work tree is not clean.\n%s\n" "$o" > + exit 1 > +} > diff=$(git diff-index --cached --name-status -r HEAD) > case "$diff" in > ?*) echo "cannot rebase: your index is not up-to-date" That alone would already be a real improvement. I'd add this to be consistant with "git status". I find the "needs update" really short, and especially confusing for centralized systems users, for whom "needs update" would probably mean "new version available, please run '$VCS update'". diff --git a/read-cache.c b/read-cache.c index 2e40a34..3745a48 100644 --- a/read-cache.c +++ b/read-cache.c @@ -869,7 +869,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: Changed but not updated\n", ce->name); has_errors = 1; continue; } -- Matthieu - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html