Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgRepository.java @ 486:d740edfff563
Provisional support for Mercurial lock mechanism
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Fri, 10 Aug 2012 21:03:03 +0200 |
| parents | ae4d6604debd |
| children | db48a77ec8ff |
comparison
equal
deleted
inserted
replaced
| 485:cdd53e5884ae | 486:d740edfff563 |
|---|---|
| 33 import org.tmatesoft.hg.core.Nodeid; | 33 import org.tmatesoft.hg.core.Nodeid; |
| 34 import org.tmatesoft.hg.core.SessionContext; | 34 import org.tmatesoft.hg.core.SessionContext; |
| 35 import org.tmatesoft.hg.internal.ByteArrayChannel; | 35 import org.tmatesoft.hg.internal.ByteArrayChannel; |
| 36 import org.tmatesoft.hg.internal.ConfigFile; | 36 import org.tmatesoft.hg.internal.ConfigFile; |
| 37 import org.tmatesoft.hg.internal.DataAccessProvider; | 37 import org.tmatesoft.hg.internal.DataAccessProvider; |
| 38 import org.tmatesoft.hg.internal.Experimental; | |
| 38 import org.tmatesoft.hg.internal.Filter; | 39 import org.tmatesoft.hg.internal.Filter; |
| 39 import org.tmatesoft.hg.internal.Internals; | 40 import org.tmatesoft.hg.internal.Internals; |
| 41 import org.tmatesoft.hg.internal.Lock; | |
| 40 import org.tmatesoft.hg.internal.RevlogStream; | 42 import org.tmatesoft.hg.internal.RevlogStream; |
| 41 import org.tmatesoft.hg.internal.SubrepoManager; | 43 import org.tmatesoft.hg.internal.SubrepoManager; |
| 42 import org.tmatesoft.hg.util.CancelledException; | 44 import org.tmatesoft.hg.util.CancelledException; |
| 43 import org.tmatesoft.hg.util.Pair; | 45 import org.tmatesoft.hg.util.Pair; |
| 44 import org.tmatesoft.hg.util.Path; | 46 import org.tmatesoft.hg.util.Path; |
| 418 getContext().getLog().dump(getClass(), Warn, "Failed to close %s after read", lastMessage); | 420 getContext().getLog().dump(getClass(), Warn, "Failed to close %s after read", lastMessage); |
| 419 } | 421 } |
| 420 } | 422 } |
| 421 } | 423 } |
| 422 } | 424 } |
| 423 | 425 |
| 426 private Lock wdLock, storeLock; | |
| 427 | |
| 428 /** | |
| 429 * PROVISIONAL CODE, DO NOT USE | |
| 430 * | |
| 431 * Access repository lock that covers non-store parts of the repository (dirstate, branches, etc - | |
| 432 * everything that has to do with working directory state). | |
| 433 * | |
| 434 * Note, the lock object returned merely gives access to lock mechanism. NO ACTUAL LOCKING IS DONE. | |
| 435 * Use {@link Lock#acquire()} to actually lock the repository. | |
| 436 * | |
| 437 * @return lock object, never <code>null</code> | |
| 438 */ | |
| 439 @Experimental(reason="WORK IN PROGRESS") | |
| 440 public Lock getWorkingDirLock() { | |
| 441 if (wdLock == null) { | |
| 442 synchronized (this) { | |
| 443 if (wdLock == null) { | |
| 444 wdLock = new Lock(new File(repoPathHelper.rewrite("wlock").toString())); | |
| 445 } | |
| 446 } | |
| 447 } | |
| 448 return wdLock; | |
| 449 } | |
| 450 | |
| 451 @Experimental(reason="WORK IN PROGRESS") | |
| 452 public Lock getStoreLock() { | |
| 453 if (storeLock == null) { | |
| 454 synchronized (this) { | |
| 455 if (storeLock == null) { | |
| 456 storeLock = new Lock(new File(repoPathHelper.rewrite("store/lock").toString())); | |
| 457 } | |
| 458 } | |
| 459 } | |
| 460 return storeLock; | |
| 461 } | |
| 462 | |
| 424 /** | 463 /** |
| 425 * Access bookmarks-related functionality | 464 * Access bookmarks-related functionality |
| 426 * @return facility to manage bookmarks, never <code>null</code> | 465 * @return facility to manage bookmarks, never <code>null</code> |
| 427 * @throws HgRuntimeException subclass thereof to indicate issues with the library. <em>Runtime exception</em> | 466 * @throws HgRuntimeException subclass thereof to indicate issues with the library. <em>Runtime exception</em> |
| 428 */ | 467 */ |
