(cherry picked from commit 5f27032fb8
)
Change-Id: I6bc0e9a910b110418a82d8e574fb2aecc3a31d6a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v4.7.3.201809090215-r
@@ -46,6 +46,7 @@ | |||
package org.eclipse.jgit.internal.storage.file; | |||
import static org.eclipse.jgit.junit.Assert.assertEquals; | |||
import static org.eclipse.jgit.lib.Constants.LOCK_SUFFIX; | |||
import static org.junit.Assert.assertEquals; | |||
import static org.junit.Assert.assertFalse; | |||
import static org.junit.Assert.assertNotNull; | |||
@@ -758,11 +759,11 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase { | |||
// Check that the involved refs are the same despite the failure | |||
assertExists(false, toName); | |||
if (!toLock.equals(toName)) | |||
assertExists(false, toName + ".lock"); | |||
assertExists(true, toLock + ".lock"); | |||
assertExists(false, toName + LOCK_SUFFIX); | |||
assertExists(true, toLock + LOCK_SUFFIX); | |||
if (!toLock.equals(fromName)) | |||
assertExists(false, "logs/" + fromName + ".lock"); | |||
assertExists(false, "logs/" + toName + ".lock"); | |||
assertExists(false, "logs/" + fromName + LOCK_SUFFIX); | |||
assertExists(false, "logs/" + toName + LOCK_SUFFIX); | |||
assertEquals(oldHeadId, db.resolve(Constants.HEAD)); | |||
assertEquals(oldfromId, db.resolve(fromName)); | |||
assertNull(db.resolve(toName)); |
@@ -3,7 +3,7 @@ | |||
<resource path="META-INF/MANIFEST.MF"> | |||
<filter id="924844039"> | |||
<message_arguments> | |||
<message_argument value="4.7.2"/> | |||
<message_argument value="4.7.3"/> | |||
<message_argument value="4.7.0"/> | |||
</message_arguments> | |||
</filter> |
@@ -44,6 +44,8 @@ | |||
package org.eclipse.jgit.internal.storage.file; | |||
import static org.eclipse.jgit.lib.Constants.LOCK_SUFFIX; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileNotFoundException; | |||
@@ -75,7 +77,6 @@ import org.eclipse.jgit.util.FileUtils; | |||
* name. | |||
*/ | |||
public class LockFile { | |||
static final String SUFFIX = ".lock"; //$NON-NLS-1$ | |||
/** | |||
* Unlock the given file. | |||
@@ -105,14 +106,15 @@ public class LockFile { | |||
* @return lock file | |||
*/ | |||
static File getLockFile(File file) { | |||
return new File(file.getParentFile(), file.getName() + SUFFIX); | |||
return new File(file.getParentFile(), | |||
file.getName() + LOCK_SUFFIX); | |||
} | |||
/** Filter to skip over active lock files when listing a directory. */ | |||
static final FilenameFilter FILTER = new FilenameFilter() { | |||
@Override | |||
public boolean accept(File dir, String name) { | |||
return !name.endsWith(SUFFIX); | |||
return !name.endsWith(LOCK_SUFFIX); | |||
} | |||
}; | |||
@@ -47,6 +47,7 @@ package org.eclipse.jgit.internal.storage.file; | |||
import static org.eclipse.jgit.lib.Constants.HEAD; | |||
import static org.eclipse.jgit.lib.Constants.LOGS; | |||
import static org.eclipse.jgit.lib.Constants.LOCK_SUFFIX; | |||
import static org.eclipse.jgit.lib.Constants.R_HEADS; | |||
import static org.eclipse.jgit.lib.Constants.R_REFS; | |||
import static org.eclipse.jgit.lib.Constants.R_REMOTES; | |||
@@ -86,7 +87,7 @@ public class ReflogWriter { | |||
* @return the name of the ref's lock ref | |||
*/ | |||
public static String refLockFor(final String name) { | |||
return name + LockFile.SUFFIX; | |||
return name + LOCK_SUFFIX; | |||
} | |||
private final Repository parent; | |||
@@ -287,4 +288,4 @@ public class ReflogWriter { | |||
|| refName.startsWith(R_REMOTES) // | |||
|| refName.equals(R_STASH); | |||
} | |||
} | |||
} |
@@ -665,6 +665,13 @@ public final class Constants { | |||
public static final ObjectId EMPTY_BLOB_ID = ObjectId | |||
.fromString("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"); | |||
/** | |||
* Suffix of lock file name | |||
* | |||
* @since 4.7 | |||
*/ | |||
public static final String LOCK_SUFFIX = ".lock"; //$NON-NLS-1$ | |||
private Constants() { | |||
// Hide the default constructor | |||
} |
@@ -48,6 +48,8 @@ | |||
package org.eclipse.jgit.lib; | |||
import static org.eclipse.jgit.lib.Constants.LOCK_SUFFIX; | |||
import java.io.BufferedOutputStream; | |||
import java.io.File; | |||
import java.io.FileNotFoundException; | |||
@@ -1293,10 +1295,12 @@ public abstract class Repository implements AutoCloseable { | |||
*/ | |||
public static boolean isValidRefName(final String refName) { | |||
final int len = refName.length(); | |||
if (len == 0) | |||
if (len == 0) { | |||
return false; | |||
if (refName.endsWith(".lock")) //$NON-NLS-1$ | |||
} | |||
if (refName.endsWith(LOCK_SUFFIX)) { | |||
return false; | |||
} | |||
// Refs may be stored as loose files so invalid paths | |||
// on the local system must also be invalid refs. |
@@ -43,6 +43,8 @@ | |||
package org.eclipse.jgit.transport; | |||
import static org.eclipse.jgit.lib.Constants.LOCK_SUFFIX; | |||
import java.io.BufferedReader; | |||
import java.io.FileNotFoundException; | |||
import java.io.IOException; | |||
@@ -341,7 +343,7 @@ public class TransportSftp extends SshTransport implements WalkTransport { | |||
@Override | |||
void writeFile(final String path, final byte[] data) throws IOException { | |||
final String lock = path + ".lock"; //$NON-NLS-1$ | |||
final String lock = path + LOCK_SUFFIX; | |||
try { | |||
super.writeFile(lock, data); | |||
try { |