comparison src/org/tmatesoft/hg/internal/COWTransaction.java @ 665:dde18bc7053b v1.2m1

Test Copy-on-Write transactions
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 10 Jul 2013 20:16:37 +0200
parents 12a4f60ea972
children
comparison
equal deleted inserted replaced
664:ae2d439fbed3 665:dde18bc7053b
22 import java.util.LinkedList; 22 import java.util.LinkedList;
23 import java.util.List; 23 import java.util.List;
24 24
25 import org.tmatesoft.hg.core.HgIOException; 25 import org.tmatesoft.hg.core.HgIOException;
26 import org.tmatesoft.hg.core.SessionContext; 26 import org.tmatesoft.hg.core.SessionContext;
27 import org.tmatesoft.hg.repo.HgInvalidStateException;
27 28
28 /** 29 /**
29 * This transaction strategy makes a copy of original file and breaks origin hard links, if any. 30 * This transaction strategy makes a copy of original file and breaks origin hard links, if any.
30 * Changes are directed to actual repository files. 31 * Changes are directed to actual repository files.
31 * 32 *
101 102
102 @Override 103 @Override
103 public void commit() throws HgIOException { 104 public void commit() throws HgIOException {
104 for (Iterator<RollbackEntry> it = entries.iterator(); it.hasNext();) { 105 for (Iterator<RollbackEntry> it = entries.iterator(); it.hasNext();) {
105 RollbackEntry e = it.next(); 106 RollbackEntry e = it.next();
106 assert e.success; 107 if (!e.success) {
108 throw new HgInvalidStateException(String.format("Attempt to commit transaction without successful clearance of file %s", e.origin));
109 }
107 if (e.failure != null) { 110 if (e.failure != null) {
108 throw new HgIOException("Can't close transaction with a failure.", e.failure, e.origin); 111 throw new HgIOException("Can't close transaction with a failure.", e.failure, e.origin);
109 } 112 }
110 if (!e.keepBackup && e.backup != null) { 113 if (!e.keepBackup && e.backup != null) {
111 e.backup.delete(); 114 e.backup.delete();