Merge branch 'stable-5.7' into stable-5.8
* stable-5.7: Remove unused imports Silence API warnings Remove erraneously merged source features Prepare 5.3.9-SNAPSHOT builds JGit v5.3.8.202011260953-r Prepare 5.1.15-SNAPSHOT builds JGit v5.1.14.202011251942-r GC#deleteOrphans: log warning for deleted orphaned files GC#deleteOrphans: handle failure to list files in pack directory Ensure that GC#deleteOrphans respects pack lock Update API warning filters Remove unused imports Change-Id: I9b94938f5c09bd726e8e368c98c56da8280fd0b2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
commit
d1801402fe
|
@ -24,10 +24,14 @@ public class GcOrphanFilesTest extends GcTestCase {
|
|||
|
||||
private static final String BITMAP_File_1 = PACK + "-1.bitmap";
|
||||
|
||||
private static final String BITMAP_File_2 = PACK + "-2.bitmap";
|
||||
|
||||
private static final String IDX_File_2 = PACK + "-2.idx";
|
||||
|
||||
private static final String IDX_File_malformed = PACK + "-1234idx";
|
||||
|
||||
private static final String KEEP_File_2 = PACK + "-2.keep";
|
||||
|
||||
private static final String PACK_File_2 = PACK + "-2.pack";
|
||||
|
||||
private static final String PACK_File_3 = PACK + "-3.pack";
|
||||
|
@ -72,6 +76,22 @@ public void malformedIdxNotDeleted() throws Exception {
|
|||
assertTrue(new File(packDir, IDX_File_malformed).exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keepPreventsDeletionOfIndexFilesForMissingPackFile()
|
||||
throws Exception {
|
||||
createFileInPackFolder(BITMAP_File_1);
|
||||
createFileInPackFolder(IDX_File_2);
|
||||
createFileInPackFolder(BITMAP_File_2);
|
||||
createFileInPackFolder(KEEP_File_2);
|
||||
createFileInPackFolder(PACK_File_3);
|
||||
gc.gc();
|
||||
assertFalse(new File(packDir, BITMAP_File_1).exists());
|
||||
assertTrue(new File(packDir, BITMAP_File_2).exists());
|
||||
assertTrue(new File(packDir, IDX_File_2).exists());
|
||||
assertTrue(new File(packDir, KEEP_File_2).exists());
|
||||
assertTrue(new File(packDir, PACK_File_3).exists());
|
||||
}
|
||||
|
||||
private void createFileInPackFolder(String fileName) throws IOException {
|
||||
if (!packDir.exists() || !packDir.isDirectory()) {
|
||||
assertTrue(packDir.mkdirs());
|
||||
|
|
|
@ -215,6 +215,7 @@ deepenNotWithDeepen=Cannot combine deepen with deepen-not
|
|||
deepenSinceWithDeepen=Cannot combine deepen with deepen-since
|
||||
deleteBranchUnexpectedResult=Delete branch returned unexpected result {0}
|
||||
deleteFileFailed=Could not delete file {0}
|
||||
deletedOrphanInPackDir=Deleted orphaned file {}
|
||||
deleteRequiresZeroNewId=Delete requires new ID to be zero
|
||||
deleteTagUnexpectedResult=Delete tag returned unexpected result {0}
|
||||
deletingNotSupported=Deleting {0} not supported.
|
||||
|
|
|
@ -243,6 +243,7 @@ public static JGitText get() {
|
|||
/***/ public String deepenSinceWithDeepen;
|
||||
/***/ public String deleteBranchUnexpectedResult;
|
||||
/***/ public String deleteFileFailed;
|
||||
/***/ public String deletedOrphanInPackDir;
|
||||
/***/ public String deleteRequiresZeroNewId;
|
||||
/***/ public String deleteTagUnexpectedResult;
|
||||
/***/ public String deletingNotSupported;
|
||||
|
|
|
@ -115,6 +115,8 @@ public class GC {
|
|||
|
||||
private static final String INDEX_EXT = "." + PackExt.INDEX.getExtension(); //$NON-NLS-1$
|
||||
|
||||
private static final String KEEP_EXT = "." + PackExt.KEEP.getExtension(); //$NON-NLS-1$
|
||||
|
||||
private static final int DEFAULT_AUTOPACKLIMIT = 50;
|
||||
|
||||
private static final int DEFAULT_AUTOLIMIT = 6700;
|
||||
|
@ -961,11 +963,15 @@ private void deleteOrphans() {
|
|||
fileNames = files.map(path -> path.getFileName().toString())
|
||||
.filter(name -> (name.endsWith(PACK_EXT)
|
||||
|| name.endsWith(BITMAP_EXT)
|
||||
|| name.endsWith(INDEX_EXT)))
|
||||
|| name.endsWith(INDEX_EXT)
|
||||
|| name.endsWith(KEEP_EXT)))
|
||||
// sort files with same base name in the order:
|
||||
// .pack, .keep, .index, .bitmap to avoid look ahead
|
||||
.sorted(Collections.reverseOrder())
|
||||
.collect(Collectors.toList());
|
||||
} catch (IOException e1) {
|
||||
// ignore
|
||||
} catch (IOException e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
return;
|
||||
}
|
||||
if (fileNames == null) {
|
||||
return;
|
||||
|
@ -973,12 +979,14 @@ private void deleteOrphans() {
|
|||
|
||||
String base = null;
|
||||
for (String n : fileNames) {
|
||||
if (n.endsWith(PACK_EXT)) {
|
||||
if (n.endsWith(PACK_EXT) || n.endsWith(KEEP_EXT)) {
|
||||
base = n.substring(0, n.lastIndexOf('.'));
|
||||
} else {
|
||||
if (base == null || !n.startsWith(base)) {
|
||||
try {
|
||||
Files.delete(packDir.resolve(n));
|
||||
Path delete = packDir.resolve(n);
|
||||
Files.delete(delete);
|
||||
LOG.warn(JGitText.get().deletedOrphanInPackDir, delete);
|
||||
} catch (IOException e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue