Mercurial > jhg
comparison src/org/tmatesoft/hg/core/HgCloneCommand.java @ 664:ae2d439fbed3
Utilize transaction when writing fncache. Better HgIOException
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 10 Jul 2013 19:33:51 +0200 |
| parents | 4a0bab2c6da1 |
| children | 545b1d4cc11d |
comparison
equal
deleted
inserted
replaced
| 663:46b56864b483 | 664:ae2d439fbed3 |
|---|---|
| 36 import org.tmatesoft.hg.internal.Internals; | 36 import org.tmatesoft.hg.internal.Internals; |
| 37 import org.tmatesoft.hg.internal.Lifecycle; | 37 import org.tmatesoft.hg.internal.Lifecycle; |
| 38 import org.tmatesoft.hg.internal.RepoInitializer; | 38 import org.tmatesoft.hg.internal.RepoInitializer; |
| 39 import org.tmatesoft.hg.internal.RevlogCompressor; | 39 import org.tmatesoft.hg.internal.RevlogCompressor; |
| 40 import org.tmatesoft.hg.internal.RevlogStreamWriter; | 40 import org.tmatesoft.hg.internal.RevlogStreamWriter; |
| 41 import org.tmatesoft.hg.internal.Transaction; | |
| 41 import org.tmatesoft.hg.repo.HgBundle; | 42 import org.tmatesoft.hg.repo.HgBundle; |
| 42 import org.tmatesoft.hg.repo.HgBundle.GroupElement; | 43 import org.tmatesoft.hg.repo.HgBundle.GroupElement; |
| 43 import org.tmatesoft.hg.repo.HgInvalidControlFileException; | 44 import org.tmatesoft.hg.repo.HgInvalidControlFileException; |
| 44 import org.tmatesoft.hg.repo.HgInvalidFileException; | |
| 45 import org.tmatesoft.hg.repo.HgInvalidStateException; | 45 import org.tmatesoft.hg.repo.HgInvalidStateException; |
| 46 import org.tmatesoft.hg.repo.HgLookup; | 46 import org.tmatesoft.hg.repo.HgLookup; |
| 47 import org.tmatesoft.hg.repo.HgRemoteRepository; | 47 import org.tmatesoft.hg.repo.HgRemoteRepository; |
| 48 import org.tmatesoft.hg.repo.HgRepository; | 48 import org.tmatesoft.hg.repo.HgRepository; |
| 49 import org.tmatesoft.hg.repo.HgRuntimeException; | 49 import org.tmatesoft.hg.repo.HgRuntimeException; |
| 124 mate.initEmptyRepository(); | 124 mate.initEmptyRepository(); |
| 125 // pull changes | 125 // pull changes |
| 126 completeChanges.inspectAll(mate); | 126 completeChanges.inspectAll(mate); |
| 127 mate.checkFailure(); | 127 mate.checkFailure(); |
| 128 mate.complete(); | 128 mate.complete(); |
| 129 } catch (IOException ex) { | |
| 130 throw new HgInvalidFileException(getClass().getName(), ex); | |
| 131 } finally { | 129 } finally { |
| 132 completeChanges.unlink(); | 130 completeChanges.unlink(); |
| 133 progress.done(); | 131 progress.done(); |
| 134 } | 132 } |
| 135 } catch (HgRuntimeException ex) { | 133 } catch (HgRuntimeException ex) { |
| 187 // XXX perhaps, with WriteDownMate moving to a more appropriate location, | 185 // XXX perhaps, with WriteDownMate moving to a more appropriate location, |
| 188 // we could instantiate HgRepository (or Internals) by other means, without exception? | 186 // we could instantiate HgRepository (or Internals) by other means, without exception? |
| 189 fncacheFile = new FNCacheFile(Internals.getInstance(new HgLookup(ctx).detect(hgDir))); | 187 fncacheFile = new FNCacheFile(Internals.getInstance(new HgLookup(ctx).detect(hgDir))); |
| 190 } | 188 } |
| 191 | 189 |
| 192 public void complete() throws IOException { | 190 public void complete() throws HgIOException { |
| 193 fncacheFile.write(); | 191 fncacheFile.write(new Transaction.NoRollback()); |
| 194 } | 192 } |
| 195 | 193 |
| 196 public void changelogStart() throws HgInvalidControlFileException { | 194 public void changelogStart() throws HgInvalidControlFileException { |
| 197 try { | 195 try { |
| 198 revlogHeader.offset(0).baseRevision(-1); | 196 revlogHeader.offset(0).baseRevision(-1); |
