anchor.diff:      ConfigFile = filename:join([Dir, "rebar.config"]),
       case file:consult(ConfigFile) of
           {ok, Terms} ->
  -            Opts = Terms ++ ParentConfig#config.opts;
  +            %% Found a config file with some terms. We need to be able to
  +            %% distinguish between local definitions (i.e. from the file
  +            %% in the cwd) and inherited definitions. To accomplish this,
  +            %% we use a marker in the proplist (since order matters) between
  +            %% the new and old defs.
  +            Opts = Terms ++ [local] ++ [Opt || Opt <- ParentConfig#config.opts, Opt /= local];
           {error, enoent} ->
  -            Opts = ParentConfig#config.opts;
  +            Opts = [local] ++ [Opt || Opt <- ParentConfig#config.opts, Opt /= local];
           Other ->
               Opts = undefined, % Keep erlc happy
  -            ?WARN("Failed to load ~s: ~p\n", [ConfigFile, Other]),
  -            ?FAIL
  +            ?ABORT("Failed to load ~s: ~p\n", [ConfigFile, Other])
       end,
       #config { dir = Dir, opts = Opts }.
  +
  +get(Config, Key, Default) ->
  +    proplists:get_value(Key, Config#config.opts, Default).
   
   get_list(Config, Key, Default) ->
       get(Config, Key, Default).
   
  -get(Config, Key, Default) ->
  -    proplists:get_value(Key, Config#config.opts, Default).
  +get_local(Config, Key, Default) ->
  +    proplists:get_value(Key, local_opts(Config#config.opts, []), Default).
   
  -delete(Config, Key) ->
  -    Config#config { opts = proplists:delete(Key, Config#config.opts) }.
  +get_all(Config, Key) ->
  +    proplists:get_all_values(Key, Config#config.opts).
  +
  +set(Config, Key, Value) ->
  +    Opts = proplists:delete(Key, Config#config.opts),
  +    Config#config { opts = [{Key, Value} | Opts] }.
   
   set_global(Key, Value) ->
       application:set_env(rebar_global, Key, Value).
  
positive.code: %% ===================================================================
  %% Internal functions
  %% ===================================================================
  
negative.code: -module(rebar_config).
  
  -export([new/0, new/1,
           get/3, get_local/3, get_list/3,
           get_all/2,
           set/3,
           set_global/2, get_global/2,
           is_verbose/0]).
  
  