This is the 5th last patch series of my work to accelerate interactive
rebases in particular on Windows.

Basically, all it does is to make reusable some functions that were
ported over from git-pull.sh but made private to builtin/pull.c.

Changes since v1:

- skipped patch that tries to make require_clean_work_tree() smart
  enough to read the index if it was not read yet.

- added a code-comment clarifying that it is the duty of
  require_clean_work_tree()'s caller to ensure that the index has been
  read.

- made the action in require_clean_work_tree() translateable. This
  amazingly easy without complexifying the code, simply by using N_()
  and _() as indicated by Jakub.


Johannes Schindelin (5):
  pull: drop confusing prefix parameter of die_on_unclean_work_tree()
  pull: make code more similar to the shell script again
  Make the require_clean_work_tree() function truly reusable
  Export also the has_un{staged,committed}_changed() functions
  wt-status: teach has_{unstaged,uncommitted}_changes() about submodules

 builtin/pull.c | 71 +++--------------------------------------------------
 wt-status.c    | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 wt-status.h    |  6 +++++
 3 files changed, 86 insertions(+), 68 deletions(-)

Published-As: 
https://github.com/dscho/git/releases/tag/require-clean-work-tree-v2
Fetch-It-Via: git fetch https://github.com/dscho/git require-clean-work-tree-v2

Interdiff vs v1:

 diff --git a/builtin/pull.c b/builtin/pull.c
 index 843ff19..c639167 100644
 --- a/builtin/pull.c
 +++ b/builtin/pull.c
 @@ -809,7 +809,7 @@ int cmd_pull(int argc, const char **argv, const char 
*prefix)
                        die(_("Updating an unborn branch with changes added to 
the index."));
  
                if (!autostash)
 -                      require_clean_work_tree("pull with rebase",
 +                      require_clean_work_tree(N_("pull with rebase"),
                                "Please commit or stash them.", 1, 0);
  
                if (get_rebase_fork_point(rebase_fork_point, repo, *refspecs))
 diff --git a/wt-status.c b/wt-status.c
 index 129b054..086ae79 100644
 --- a/wt-status.c
 +++ b/wt-status.c
 @@ -2258,20 +2258,13 @@ int require_clean_work_tree(const char *action, const 
char *hint, int ignore_sub
        struct lock_file *lock_file = xcalloc(1, sizeof(*lock_file));
        int err = 0;
  
 -      if (read_cache() < 0) {
 -              error(_("Could not read index"));
 -              if (gently)
 -                      return -1;
 -              exit(1);
 -      }
 -
        hold_locked_index(lock_file, 0);
        refresh_cache(REFRESH_QUIET);
        update_index_if_able(&the_index, lock_file);
        rollback_lock_file(lock_file);
  
        if (has_unstaged_changes(ignore_submodules)) {
 -              error(_("Cannot %s: You have unstaged changes."), action);
 +              error(_("Cannot %s: You have unstaged changes."), _(action));
                err = 1;
        }
  
 @@ -2279,7 +2272,8 @@ int require_clean_work_tree(const char *action, const 
char *hint, int ignore_sub
                if (err)
                        error(_("Additionally, your index contains uncommitted 
changes."));
                else
 -                      error(_("Cannot %s: Your index contains uncommitted 
changes."), action);
 +                      error(_("Cannot %s: Your index contains uncommitted 
changes."),
 +                            _(action));
                err = 1;
        }
  
 diff --git a/wt-status.h b/wt-status.h
 index f0e66c4..54fec77 100644
 --- a/wt-status.h
 +++ b/wt-status.h
 @@ -128,6 +128,7 @@ void status_printf_ln(struct wt_status *s, const char 
*color, const char *fmt, .
  __attribute__((format (printf, 3, 4)))
  void status_printf(struct wt_status *s, const char *color, const char *fmt, 
...);
  
 +/* The following functions expect that the caller took care of reading the 
index. */
  int has_unstaged_changes(int ignore_submodules);
  int has_uncommitted_changes(int ignore_submodules);
  int require_clean_work_tree(const char *action, const char *hint,

-- 
2.10.0.windows.1.10.g803177d

base-commit: cda1bbd474805e653dda8a71d4ea3790e2a66cbb

Reply via email to