From aa97f5794cbe973ac4600ba26fe5b1550f23552f Mon Sep 17 00:00:00 2001 From: John Lees-Miller Date: Thu, 2 Jul 2026 11:46:09 +0100 Subject: [PATCH] [git-bridge] fix symlink handling (#35133) GitOrigin-RevId: 282823db63f64bfae950b00e77a6cdc2a048b0ce --- .../uk/ac/ic/wlgitbridge/bridge/repo/GitProjectRepo.java | 6 ++++++ .../src/main/java/uk/ac/ic/wlgitbridge/util/Util.java | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/GitProjectRepo.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/GitProjectRepo.java index d9d190883c..9cc84f98ba 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/GitProjectRepo.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/repo/GitProjectRepo.java @@ -14,9 +14,11 @@ import org.apache.commons.io.IOUtils; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.ResetCommand; import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import uk.ac.ic.wlgitbridge.data.filestore.GitDirectoryContents; import uk.ac.ic.wlgitbridge.data.filestore.RawDirectory; @@ -84,6 +86,10 @@ public class GitProjectRepo implements ProjectRepo { return; } repo.create(); + StoredConfig config = repo.getConfig(); + config.setBoolean( + ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_SYMLINKS, false); + config.save(); // Set default branch to "main" for new projects repo.updateRef(Constants.HEAD).link("refs/heads/main"); } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/util/Util.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/util/Util.java index b09af4dbed..9f58ff32ab 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/util/Util.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/util/Util.java @@ -109,7 +109,8 @@ public class Util { if (files != null) { for (File file : files) { if (!excluded.contains(file.getName())) { - if (file.isDirectory()) { + if (java.nio.file.Files.isDirectory( + file.toPath(), java.nio.file.LinkOption.NOFOLLOW_LINKS)) { deleteInDirectory(file); } file.delete();