             // re-resolve such that the objects in this repository changed, we would
             // only ever expect to get back a revision that remains present in the
             // object storage.
-            try self.callGit("clone", "--shared", "--no-checkout", sourcePath.pathString, destinationPath.pathString,
+            //
+            // NOTE: Explicitly set `core.symlinks=true` on `git clone` to ensure that symbolic links are correctly resolved.
+            try self.callGit("clone", "-c", "core.symlinks=true", "--shared", "--no-checkout", sourcePath.pathString, destinationPath.pathString,
                              repository: repository,
                              failureMessage: "Failed to clone repository \(repository.url)")
         }

        precondition(!localFileSystem.exists(path))

        // FIXME: Ideally we should pass `--progress` here and report status regularly.  We currently don't have callbacks for that.
        try self.callGit("clone", "--mirror", repository.url, path.pathString,
                         repository: repository,
                         failureMessage: "Failed to clone repository \(repository.url)")
    }

            // For editable clones, i.e. the user is expected to directly work on them, first we create
            // a clone from our cache of repositories and then we replace the remote to the one originally
            // present in the bare repository.
            //
            // NOTE: Explicitly set `core.symlinks=true` on `git clone` to ensure that symbolic links are correctly resolved.
            try self.callGit("clone", "-c", "core.symlinks=true", "--no-checkout", sourcePath.pathString, destinationPath.pathString,
                             repository: repository,
                             failureMessage: "Failed to clone repository \(repository.url)")
            // The default name of the remote.
