Merge tag '2.44.3'

Release version 2.44.3
This commit is contained in:
tzerr
2023-09-01 10:44:33 +02:00
10 changed files with 37 additions and 12 deletions

View File

@@ -59,6 +59,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Change `myCloudogu` to new brand name `cloudogu platform`
- Use Java 17 for Docker containers
## [2.44.3] - 2023-08-31
### Fixed
- Loading LFS files for imports and mirrors
- Handling of submodules in imports and mirrors
## [2.44.2] - 2023-06-23
### Fixed
- Internal server error with external groups in permission overview
@@ -1355,6 +1360,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[2.44.0]: https://scm-manager.org/download/2.44.0
[2.44.1]: https://scm-manager.org/download/2.44.1
[2.44.2]: https://scm-manager.org/download/2.44.2
[2.45.0]: https://scm-manager.org/download/2.45.0
[2.45.1]: https://scm-manager.org/download/2.45.1
[2.46.0]: https://scm-manager.org/download/2.46.0

View File

@@ -24,6 +24,7 @@
package sonia.scm.repository.spi;
import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.lfs.Lfs;
import org.eclipse.jgit.lfs.LfsPointer;
import org.eclipse.jgit.lfs.Protocol;
@@ -32,6 +33,7 @@ import org.eclipse.jgit.lfs.lib.AnyLongObjectId;
import org.eclipse.jgit.lfs.lib.LfsPointerFilter;
import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -85,7 +87,8 @@ class LfsLoader {
.setString(ConfigConstants.CONFIG_SECTION_LFS, null, ConfigConstants.CONFIG_KEY_URL, computeLfsUrl(sourceUrl));
TreeWalk treeWalk = new TreeWalk(gitRepository);
treeWalk.setFilter(new LfsPointerFilter());
treeWalk.setFilter(new ScmLfsPointerFilter());
treeWalk.setRecursive(true);
RevWalk revWalk = new RevWalk(gitRepository);
revWalk.markStart(revWalk.parseCommit(newObjectId));
@@ -184,4 +187,24 @@ class LfsLoader {
void loading(String name);
}
/**
* Fixes a bug in {@link org.eclipse.jgit.lfs.lib.LfsPointerFilter} for repositories containing submodules.
* These result in a {@link MissingObjectException} when the original class is used, because the filter tries
* to load the sha hash for the submodule as a simple file. To prevent this, this extension overrides
* {@link #include(TreeWalk)} and checks first, whether the walk points to a regular file before proceeding
* with the original implemantation.
*
* In later implementations this fix should be implemented in JGit directly. This subclass can then be removed.
*/
private static class ScmLfsPointerFilter extends LfsPointerFilter {
@Override
public boolean include(TreeWalk walk) throws IOException {
if (walk.getFileMode().equals(FileMode.GITLINK)) {
return false;
}
return super.include(walk);
}
}
}