Module: MultiGit::Ref::OptimisticUpdater

Included in:
OptimisticFileUpdater, MultiGit::RuggedBackend::Ref::OptimisticUpdater
Defined in:
lib/multi_git/ref.rb

Instance Method Summary collapse

Instance Method Details

#update(new) ⇒ Object



196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/multi_git/ref.rb', line 196

def update(new)
  ensure_dir!
  lock = acquire_lock
  begin
    current = ref.reload.target
    if current != target
      raise Error::ConcurrentRefUpdate
    end
    old = target
    nx = super
    if nx.nil?
      remove!
    else
      update!(nx)
    end
    return nx
  ensure
    release_lock( lock ) if lock
  end
end