|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.eclipse.jgit.lib.LockFile
public class LockFile
Git style file locking and replacement.
To modify a ref file Git tries to use an atomic update approach: we write the new data into a brand new file, then rename it in place over the old name. This way we can just delete the temporary file if anything goes wrong, and nothing has been damaged. To coordinate access from multiple processes at once Git tries to atomically create the new temporary file under a well-known name.
| Constructor Summary | |
|---|---|
LockFile(java.io.File f)
Create a new lock for any file. |
|
| Method Summary | |
|---|---|
boolean |
commit()
Commit this change and release the lock. |
void |
copyCurrentContent()
Copy the current file content into the temporary file. |
long |
getCommitLastModified()
Get the modification time of the output file when it was committed. |
java.io.OutputStream |
getOutputStream()
Obtain the direct output stream for this lock. |
boolean |
lock()
Try to establish the lock. |
boolean |
lockForAppend()
Try to establish the lock for appending. |
void |
setNeedStatInformation(boolean on)
Request that commit() remember modification time. |
java.lang.String |
toString()
|
void |
unlock()
Unlock this file and abort this change. |
void |
write(byte[] content)
Write arbitrary data to the temporary file. |
void |
write(ObjectId id)
Write an ObjectId and LF to the temporary file. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public LockFile(java.io.File f)
f - the file that will be locked.| Method Detail |
|---|
public boolean lock()
throws java.io.IOException
java.io.IOException - the temporary output file could not be created. The caller
does not hold the lock.
public boolean lockForAppend()
throws java.io.IOException
java.io.IOException - the temporary output file could not be created. The caller
does not hold the lock.
public void copyCurrentContent()
throws java.io.IOException
This method saves the current file content by inserting it into the temporary file, so that the caller can safely append rather than replace the primary file.
This method does nothing if the current file does not exist, or exists but is empty.
java.io.IOException - the temporary file could not be written, or a read error
occurred while reading from the current file. The lock is
released before throwing the underlying IO exception to the
caller.
java.lang.RuntimeException - the temporary file could not be written. The lock is released
before throwing the underlying exception to the caller.
public void write(ObjectId id)
throws java.io.IOException
id - the id to store in the file. The id will be written in hex,
followed by a sole LF.
java.io.IOException - the temporary file could not be written. The lock is released
before throwing the underlying IO exception to the caller.
java.lang.RuntimeException - the temporary file could not be written. The lock is released
before throwing the underlying exception to the caller.
public void write(byte[] content)
throws java.io.IOException
content - the bytes to store in the temporary file. No additional bytes
are added, so if the file must end with an LF it must appear
at the end of the byte array.
java.io.IOException - the temporary file could not be written. The lock is released
before throwing the underlying IO exception to the caller.
java.lang.RuntimeException - the temporary file could not be written. The lock is released
before throwing the underlying exception to the caller.public java.io.OutputStream getOutputStream()
The stream may only be accessed once, and only after lock() has
been successfully invoked and returned true. Callers must close the
stream prior to calling commit() to commit the change.
public void setNeedStatInformation(boolean on)
commit() remember modification time.
on - true if the commit method must remember the modification time.public boolean commit()
If this method fails (returns false) the lock is still released.
java.lang.IllegalStateException - the lock is not held.public long getCommitLastModified()
public void unlock()
The temporary file (if created) is deleted before returning.
public java.lang.String toString()
toString in class java.lang.Object
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||