Skip to content
  • Junio C Hamano's avatar
    git: simplify environment save/restore logic · 441981bc
    Junio C Hamano authored
    
    
    The only code that cares about the value of the global variable
    saved_env_before_alias after the previous fix is handle_builtin()
    that turns into a glorified no-op when the variable is true, so the
    logic could safely be lifted to its caller, i.e. the caller can
    refrain from calling it when the variable is set.
    
    This variable tells us if save_env_before_alias() was called (with
    or without matching restore_env()), but the sole caller of the
    function, handle_alias(), always calls it as the first thing, so we
    can consider that the variable essentially keeps track of the fact
    that handle_alias() has ever been called.
    
    It turns out that handle_builtin() and handle_alias() are called
    only from one function in a way that the value of the variable
    matters, which is run_argv(), and it already keeps track of the
    fact that it already called handle_alias().
    
    So we can simplify the whole thing by:
    
    - Change handle_builtin() to always make a direct call to the
      builtin implementation it finds, and make sure the caller
      refrains from calling it if handle_alias() has ever been
      called;
    
    - Remove saved_env_before_alias variable, and instead use the
      local "done_alias" variable maintained inside run_argv() to
      make the same decision.
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    441981bc