diff --git a/base/env.jl b/base/env.jl index 6521c94a476a2..8ac32295beba5 100644 --- a/base/env.jl +++ b/base/env.jl @@ -141,6 +141,18 @@ function show(io::IO, ::EnvHash) end end +# temporarily set and then restore an environment value +function with_env(f::Function, key::String, val) + old = get(ENV,key,nothing) + val != nothing ? (ENV[key]=val) : _unsetenv(key) + try f() + finally + old != nothing ? (ENV[key]=old) : _unsetenv(key) + catch + rethrow() + end +end + ## misc environment-related functionality ## tty_cols() = parseint(Int32, get(ENV,"COLUMNS","80"), 10) diff --git a/base/pkg/entry.jl b/base/pkg/entry.jl index e59a28804c650..7a979fcb31bec 100644 --- a/base/pkg/entry.jl +++ b/base/pkg/entry.jl @@ -184,7 +184,9 @@ function update(branch::String) Git.run(`checkout -q $branch`) end # TODO: handle merge conflicts - Git.run(`pull -q --no-edit`, out=DevNull) + with_env("GIT_MERGE_AUTOEDIT","no") do + Git.run(`pull -q`, out=DevNull) + end end avail = Read.available() # this has to happen before computing free/fixed