mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 17:26:22 +01:00
Merge tag '2.44.3'
Release version 2.44.3
This commit is contained in:
@@ -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`
|
- Change `myCloudogu` to new brand name `cloudogu platform`
|
||||||
- Use Java 17 for Docker containers
|
- 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
|
## [2.44.2] - 2023-06-23
|
||||||
### Fixed
|
### Fixed
|
||||||
- Internal server error with external groups in permission overview
|
- 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.0]: https://scm-manager.org/download/2.44.0
|
||||||
[2.44.1]: https://scm-manager.org/download/2.44.1
|
[2.44.1]: https://scm-manager.org/download/2.44.1
|
||||||
[2.44.2]: https://scm-manager.org/download/2.44.2
|
[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
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
package sonia.scm.repository.spi;
|
package sonia.scm.repository.spi;
|
||||||
|
|
||||||
|
import org.eclipse.jgit.errors.MissingObjectException;
|
||||||
import org.eclipse.jgit.lfs.Lfs;
|
import org.eclipse.jgit.lfs.Lfs;
|
||||||
import org.eclipse.jgit.lfs.LfsPointer;
|
import org.eclipse.jgit.lfs.LfsPointer;
|
||||||
import org.eclipse.jgit.lfs.Protocol;
|
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.lfs.lib.LfsPointerFilter;
|
||||||
import org.eclipse.jgit.lib.ConfigConstants;
|
import org.eclipse.jgit.lib.ConfigConstants;
|
||||||
import org.eclipse.jgit.lib.Constants;
|
import org.eclipse.jgit.lib.Constants;
|
||||||
|
import org.eclipse.jgit.lib.FileMode;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
import org.eclipse.jgit.lib.Repository;
|
import org.eclipse.jgit.lib.Repository;
|
||||||
import org.eclipse.jgit.revwalk.RevCommit;
|
import org.eclipse.jgit.revwalk.RevCommit;
|
||||||
@@ -85,7 +87,8 @@ class LfsLoader {
|
|||||||
.setString(ConfigConstants.CONFIG_SECTION_LFS, null, ConfigConstants.CONFIG_KEY_URL, computeLfsUrl(sourceUrl));
|
.setString(ConfigConstants.CONFIG_SECTION_LFS, null, ConfigConstants.CONFIG_KEY_URL, computeLfsUrl(sourceUrl));
|
||||||
|
|
||||||
TreeWalk treeWalk = new TreeWalk(gitRepository);
|
TreeWalk treeWalk = new TreeWalk(gitRepository);
|
||||||
treeWalk.setFilter(new LfsPointerFilter());
|
treeWalk.setFilter(new ScmLfsPointerFilter());
|
||||||
|
treeWalk.setRecursive(true);
|
||||||
|
|
||||||
RevWalk revWalk = new RevWalk(gitRepository);
|
RevWalk revWalk = new RevWalk(gitRepository);
|
||||||
revWalk.markStart(revWalk.parseCommit(newObjectId));
|
revWalk.markStart(revWalk.parseCommit(newObjectId));
|
||||||
@@ -184,4 +187,24 @@ class LfsLoader {
|
|||||||
|
|
||||||
void loading(String name);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user