Class: MultiGit::JGitBackend::Ref::OptimisticUpdater
- Inherits:
-
Updater
- Object
- Ref::Updater
- Updater
- MultiGit::JGitBackend::Ref::OptimisticUpdater
- Defined in:
- lib/multi_git/jgit_backend/ref.rb
Instance Attribute Summary
Attributes inherited from Ref::Updater
Instance Method Summary collapse
Methods inherited from Ref::Updater
#destroy!, #initialize, #name, #repository
Constructor Details
This class inherits a constructor from MultiGit::Ref::Updater
Instance Method Details
#update(nx) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/multi_git/jgit_backend/ref.rb', line 41 def update(nx) ru = repository.__backend__.updateRef(name) begin if !ru.try_lock(false) raise end if ref.direct? old_id = ObjectId.toString(ru.old_object_id) if target.nil? raise Error::ConcurrentRefUpdate if old_id != Utils::NULL_OID elsif old_id != target.oid raise Error::ConcurrentRefUpdate end end nx = super do_update(ru, nx) return nx ensure ru.unlock end end |