Repository navigation
JFMIG-88 - Replace data-transfer plugin with GET/PUT streaming in transfer-files - #1629
Merged
Merged
Conversation
…nsfer-files transfer-files now reads files from the source Artifactory and writes them to the target directly from the CLI, so no plugin is installed on the source. - Add source and target clients and the GET/PUT streaming file transfer, wired into transfer-files - Remove the data-transfer plugin path, including the transferinstall package and the plugin installer (JFMIG-93) - Restore --proxy-key as a target-only HTTP proxy URL - Fix silent data loss and hangs in GET/PUT transfer-files (JFMIG-93) - Treat folder-info's missing size field as 0, fix the over-broad cocoapods/swift generated-file filter, and apply gofmt to proxy.go
Contributor
deepakkjfrog
approved these changes
Nov 4, 2026
3 of 4 tasks
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Replaces the data-transfer plugin path of
jf rt transfer-fileswith a direct GET -> PUT streaming transfer: files are read from the source Artifactory and written to the target by the CLI, so no plugin has to be installed on the source.Included (JFMIG-88, JFMIG-93):
transfer-filestransferinstallpackage and the plugin installer--proxy-keyrestored as a bare proxy key, looked up in the source Artifactory's proxy configuration (api/system/configuration/platform/proxies). The resolved proxy is used only for requests to the target, never for source requests, and must be reachable from the CLI host.Notes for reviewers
rt transfer-plugin-installsupport is removed from core (artifactory/commands/transferinstall). The matching jfrog-cli change keeps the command registered as a hidden, warn-only deprecated command: JFMIG-82 - Remove data-transfer plugin dependency from transfer-files; deprecate transfer-plugin-install jfrog-cli#3747. That PR must not merge before this one is released and itsgo.modis bumped.sourceclient/targetclientand their tests.Testing
go build ./...,go vet ./artifactory/...andgo test ./artifactory/commands/transferfiles/... ./artifactory/commands/utils/...pass on this branch.jfbuilt from this branch plus jfrog-cli#3747, full and delta transfers of generic, maven, npm and pypi repos (239 files, about 201 MB, including a 120 MB file): exit 0, no errors or warnings, no calls to the data-transfer plugin endpoints in the debug log, and file counts, sizes, sha256 and properties match. Only server-generated metadata differs (maven-metadata.xml, npm index JSON,npm.disttagvsnpm.detachedtags).--proxy-keypaths. Files deleted on the source are not removed from the target (not compared against the plugin-based behavior). The source server used in the E2E still had the plugin loaded, so independence from it is shown by the absence of plugin calls, not by the plugin being absent.