Merge branch 'stable-5.6' into stable-5.7
* stable-5.6: 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: Ie24d381f295cccfb99068c7ed5817179da29c1db Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
commit
99f5329c38
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feature
|
||||||
|
id="org.eclipse.jgit.pgm.source"
|
||||||
|
label="%featureName"
|
||||||
|
version="5.3.9.qualifier"
|
||||||
|
provider-name="%providerName">
|
||||||
|
|
||||||
|
<description url="http://www.eclipse.org/jgit/">
|
||||||
|
%description
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
%copyright
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<license url="%licenseURL">
|
||||||
|
%license
|
||||||
|
</license>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<update label="%updateSiteName" url="http://download.eclipse.org/egit/updates"/>
|
||||||
|
<discovery label="%updateSiteName" url="http://download.eclipse.org/egit/updates"/>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.jgit.pgm.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
</feature>
|
|
@ -0,0 +1,62 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2012, Matthias Sohn <matthias.sohn@sap.com>
|
||||||
|
and other copyright owners as documented in the project's IP log.
|
||||||
|
|
||||||
|
This program and the accompanying materials are made available
|
||||||
|
under the terms of the Eclipse Distribution License v1.0 which
|
||||||
|
accompanies this distribution, is reproduced below, and is
|
||||||
|
available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or
|
||||||
|
without modification, are permitted provided that the following
|
||||||
|
conditions are met:
|
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
- Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
- Neither the name of the Eclipse Foundation, Inc. nor the
|
||||||
|
names of its contributors may be used to endorse or promote
|
||||||
|
products derived from this software without specific prior
|
||||||
|
written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.eclipse.jgit</groupId>
|
||||||
|
<artifactId>jgit.tycho.parent</artifactId>
|
||||||
|
<version>5.3.9-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<groupId>org.eclipse.jgit.feature</groupId>
|
||||||
|
<artifactId>org.eclipse.jgit.pgm.source</artifactId>
|
||||||
|
<packaging>eclipse-feature</packaging>
|
||||||
|
|
||||||
|
<name>JGit Command Line Interface Source Feature</name>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feature
|
||||||
|
id="org.eclipse.jgit.ssh.apache.source"
|
||||||
|
label="%featureName"
|
||||||
|
version="5.3.9.qualifier"
|
||||||
|
provider-name="%providerName">
|
||||||
|
|
||||||
|
<description url="http://www.eclipse.org/jgit/">
|
||||||
|
%description
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
%copyright
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<license url="%licenseURL">
|
||||||
|
%license
|
||||||
|
</license>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<update label="%updateSiteName" url="http://download.eclipse.org/egit/updates"/>
|
||||||
|
<discovery label="%updateSiteName" url="http://download.eclipse.org/egit/updates"/>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<plugin
|
||||||
|
id="org.eclipse.jgit.ssh.apache.source"
|
||||||
|
download-size="0"
|
||||||
|
install-size="0"
|
||||||
|
version="0.0.0"
|
||||||
|
unpack="false"/>
|
||||||
|
</feature>
|
|
@ -0,0 +1,62 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2018 Thomas Wolf <thomas.wolf@paranor.ch>
|
||||||
|
and other copyright owners as documented in the project's IP log.
|
||||||
|
|
||||||
|
This program and the accompanying materials are made available
|
||||||
|
under the terms of the Eclipse Distribution License v1.0 which
|
||||||
|
accompanies this distribution, is reproduced below, and is
|
||||||
|
available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or
|
||||||
|
without modification, are permitted provided that the following
|
||||||
|
conditions are met:
|
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
- Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
- Neither the name of the Eclipse Foundation, Inc. nor the
|
||||||
|
names of its contributors may be used to endorse or promote
|
||||||
|
products derived from this software without specific prior
|
||||||
|
written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.eclipse.jgit</groupId>
|
||||||
|
<artifactId>jgit.tycho.parent</artifactId>
|
||||||
|
<version>5.3.9-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<groupId>org.eclipse.jgit.feature</groupId>
|
||||||
|
<artifactId>org.eclipse.jgit.ssh.apache.source</artifactId>
|
||||||
|
<packaging>eclipse-feature</packaging>
|
||||||
|
|
||||||
|
<name>JGit Apache MINA ssh Source Feature</name>
|
||||||
|
|
||||||
|
</project>
|
|
@ -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_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_2 = PACK + "-2.idx";
|
||||||
|
|
||||||
private static final String IDX_File_malformed = PACK + "-1234idx";
|
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_2 = PACK + "-2.pack";
|
||||||
|
|
||||||
private static final String PACK_File_3 = PACK + "-3.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());
|
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 {
|
private void createFileInPackFolder(String fileName) throws IOException {
|
||||||
if (!packDir.exists() || !packDir.isDirectory()) {
|
if (!packDir.exists() || !packDir.isDirectory()) {
|
||||||
assertTrue(packDir.mkdirs());
|
assertTrue(packDir.mkdirs());
|
||||||
|
|
|
@ -214,6 +214,7 @@ deepenNotWithDeepen=Cannot combine deepen with deepen-not
|
||||||
deepenSinceWithDeepen=Cannot combine deepen with deepen-since
|
deepenSinceWithDeepen=Cannot combine deepen with deepen-since
|
||||||
deleteBranchUnexpectedResult=Delete branch returned unexpected result {0}
|
deleteBranchUnexpectedResult=Delete branch returned unexpected result {0}
|
||||||
deleteFileFailed=Could not delete file {0}
|
deleteFileFailed=Could not delete file {0}
|
||||||
|
deletedOrphanInPackDir=Deleted orphaned file {}
|
||||||
deleteRequiresZeroNewId=Delete requires new ID to be zero
|
deleteRequiresZeroNewId=Delete requires new ID to be zero
|
||||||
deleteTagUnexpectedResult=Delete tag returned unexpected result {0}
|
deleteTagUnexpectedResult=Delete tag returned unexpected result {0}
|
||||||
deletingNotSupported=Deleting {0} not supported.
|
deletingNotSupported=Deleting {0} not supported.
|
||||||
|
|
|
@ -242,6 +242,7 @@ public static JGitText get() {
|
||||||
/***/ public String deepenSinceWithDeepen;
|
/***/ public String deepenSinceWithDeepen;
|
||||||
/***/ public String deleteBranchUnexpectedResult;
|
/***/ public String deleteBranchUnexpectedResult;
|
||||||
/***/ public String deleteFileFailed;
|
/***/ public String deleteFileFailed;
|
||||||
|
/***/ public String deletedOrphanInPackDir;
|
||||||
/***/ public String deleteRequiresZeroNewId;
|
/***/ public String deleteRequiresZeroNewId;
|
||||||
/***/ public String deleteTagUnexpectedResult;
|
/***/ public String deleteTagUnexpectedResult;
|
||||||
/***/ public String deletingNotSupported;
|
/***/ 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 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_AUTOPACKLIMIT = 50;
|
||||||
|
|
||||||
private static final int DEFAULT_AUTOLIMIT = 6700;
|
private static final int DEFAULT_AUTOLIMIT = 6700;
|
||||||
|
@ -961,11 +963,15 @@ private void deleteOrphans() {
|
||||||
fileNames = files.map(path -> path.getFileName().toString())
|
fileNames = files.map(path -> path.getFileName().toString())
|
||||||
.filter(name -> (name.endsWith(PACK_EXT)
|
.filter(name -> (name.endsWith(PACK_EXT)
|
||||||
|| name.endsWith(BITMAP_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())
|
.sorted(Collections.reverseOrder())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
} catch (IOException e1) {
|
} catch (IOException e) {
|
||||||
// ignore
|
LOG.error(e.getMessage(), e);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (fileNames == null) {
|
if (fileNames == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -973,12 +979,14 @@ private void deleteOrphans() {
|
||||||
|
|
||||||
String base = null;
|
String base = null;
|
||||||
for (String n : fileNames) {
|
for (String n : fileNames) {
|
||||||
if (n.endsWith(PACK_EXT)) {
|
if (n.endsWith(PACK_EXT) || n.endsWith(KEEP_EXT)) {
|
||||||
base = n.substring(0, n.lastIndexOf('.'));
|
base = n.substring(0, n.lastIndexOf('.'));
|
||||||
} else {
|
} else {
|
||||||
if (base == null || !n.startsWith(base)) {
|
if (base == null || !n.startsWith(base)) {
|
||||||
try {
|
try {
|
||||||
Files.delete(packDir.resolve(n));
|
Path delete = packDir.resolve(n);
|
||||||
|
Files.delete(delete);
|
||||||
|
LOG.warn(JGitText.get().deletedOrphanInPackDir, delete);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue