|
|
|
@ -493,8 +493,9 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
return leaf; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void storedSymbolicRef(RefDirectoryUpdate u, long modified, String target) { |
|
|
|
|
putLooseRef(newSymbolicRef(modified, u.getRef().getName(), target)); |
|
|
|
|
void storedSymbolicRef(RefDirectoryUpdate u, FileSnapshot snapshot, |
|
|
|
|
String target) { |
|
|
|
|
putLooseRef(newSymbolicRef(snapshot, u.getRef().getName(), target)); |
|
|
|
|
fireRefsChanged(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -526,10 +527,10 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
return new RefDirectoryRename(from, to); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void stored(RefDirectoryUpdate update, long modified) { |
|
|
|
|
void stored(RefDirectoryUpdate update, FileSnapshot snapshot) { |
|
|
|
|
final ObjectId target = update.getNewObjectId().copy(); |
|
|
|
|
final Ref leaf = update.getRef().getLeaf(); |
|
|
|
|
putLooseRef(new LooseUnpeeled(modified, leaf.getName(), target)); |
|
|
|
|
putLooseRef(new LooseUnpeeled(snapshot, leaf.getName(), target)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void putLooseRef(LooseRef ref) { |
|
|
|
@ -852,8 +853,7 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
if (!currentSnapshot.isModified(path)) |
|
|
|
|
return ref; |
|
|
|
|
name = ref.getName(); |
|
|
|
|
} else if (!path.exists()) |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
final int limit = 4096; |
|
|
|
|
final byte[] buf; |
|
|
|
@ -885,7 +885,7 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
currentSnapshot.setClean(otherSnapshot); |
|
|
|
|
return ref; |
|
|
|
|
} |
|
|
|
|
return newSymbolicRef(path.lastModified(), name, target); |
|
|
|
|
return newSymbolicRef(otherSnapshot, name, target); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (n < OBJECT_ID_STRING_LENGTH) |
|
|
|
@ -906,7 +906,7 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
String content = RawParseUtils.decode(buf, 0, n); |
|
|
|
|
throw new IOException(MessageFormat.format(JGitText.get().notARef, name, content)); |
|
|
|
|
} |
|
|
|
|
return new LooseUnpeeled(path.lastModified(), name, id); |
|
|
|
|
return new LooseUnpeeled(otherSnapshot, name, id); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static boolean isSymRef(final byte[] buf, int n) { |
|
|
|
@ -1004,10 +1004,10 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static LooseSymbolicRef newSymbolicRef(long lastModified, |
|
|
|
|
private static LooseSymbolicRef newSymbolicRef(FileSnapshot snapshot, |
|
|
|
|
String name, String target) { |
|
|
|
|
Ref dst = new ObjectIdRef.Unpeeled(NEW, target, null); |
|
|
|
|
return new LooseSymbolicRef(lastModified, name, dst); |
|
|
|
|
return new LooseSymbolicRef(snapshot, name, dst); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static interface LooseRef extends Ref { |
|
|
|
@ -1020,9 +1020,10 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
implements LooseRef { |
|
|
|
|
private final FileSnapshot snapShot; |
|
|
|
|
|
|
|
|
|
LoosePeeledTag(long mtime, String refName, ObjectId id, ObjectId p) { |
|
|
|
|
LoosePeeledTag(FileSnapshot snapshot, String refName, ObjectId id, |
|
|
|
|
ObjectId p) { |
|
|
|
|
super(LOOSE, refName, id, p); |
|
|
|
|
snapShot = FileSnapshot.save(mtime); |
|
|
|
|
this.snapShot = snapshot; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public FileSnapshot getSnapShot() { |
|
|
|
@ -1038,9 +1039,9 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
implements LooseRef { |
|
|
|
|
private final FileSnapshot snapShot; |
|
|
|
|
|
|
|
|
|
LooseNonTag(long mtime, String refName, ObjectId id) { |
|
|
|
|
LooseNonTag(FileSnapshot snapshot, String refName, ObjectId id) { |
|
|
|
|
super(LOOSE, refName, id); |
|
|
|
|
snapShot = FileSnapshot.save(mtime); |
|
|
|
|
this.snapShot = snapshot; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public FileSnapshot getSnapShot() { |
|
|
|
@ -1054,11 +1055,11 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
|
|
|
|
|
private final static class LooseUnpeeled extends ObjectIdRef.Unpeeled |
|
|
|
|
implements LooseRef { |
|
|
|
|
private final FileSnapshot snapShot; |
|
|
|
|
private FileSnapshot snapShot; |
|
|
|
|
|
|
|
|
|
LooseUnpeeled(long mtime, String refName, ObjectId id) { |
|
|
|
|
LooseUnpeeled(FileSnapshot snapShot, String refName, ObjectId id) { |
|
|
|
|
super(LOOSE, refName, id); |
|
|
|
|
snapShot = FileSnapshot.save(mtime); |
|
|
|
|
this.snapShot = snapShot; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public FileSnapshot getSnapShot() { |
|
|
|
@ -1067,10 +1068,10 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
|
|
|
|
|
public LooseRef peel(ObjectIdRef newLeaf) { |
|
|
|
|
if (newLeaf.getPeeledObjectId() != null) |
|
|
|
|
return new LoosePeeledTag(snapShot.lastModified(), getName(), |
|
|
|
|
return new LoosePeeledTag(snapShot, getName(), |
|
|
|
|
getObjectId(), newLeaf.getPeeledObjectId()); |
|
|
|
|
else |
|
|
|
|
return new LooseNonTag(snapShot.lastModified(), getName(), |
|
|
|
|
return new LooseNonTag(snapShot, getName(), |
|
|
|
|
getObjectId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -1079,9 +1080,9 @@ public class RefDirectory extends RefDatabase {
|
|
|
|
|
LooseRef { |
|
|
|
|
private final FileSnapshot snapShot; |
|
|
|
|
|
|
|
|
|
LooseSymbolicRef(long mtime, String refName, Ref target) { |
|
|
|
|
LooseSymbolicRef(FileSnapshot snapshot, String refName, Ref target) { |
|
|
|
|
super(refName, target); |
|
|
|
|
snapShot = FileSnapshot.save(mtime); |
|
|
|
|
this.snapShot = snapshot; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public FileSnapshot getSnapShot() { |
|
|
|
|