Module: MultiGit::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 |