]> git.ipfire.org Git - thirdparty/git.git/commit
bundle-uri: create basic file-copy logic
authorDerrick Stolee <derrickstolee@github.com>
Tue, 9 Aug 2022 13:11:40 +0000 (13:11 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Aug 2022 21:07:37 +0000 (14:07 -0700)
commit53a50892be20a91fb0dcf572a641ce2a79af1a38
tree25a3b885e92e3d234ebe2f36f7838343d6af0c92
parentb5624a44744d6e5f9c749e4df02932c724e2097e
bundle-uri: create basic file-copy logic

Before implementing a way to fetch bundles into a repository, create the
basic logic. Assume that the URI is actually a file path. Future logic
will make this more careful to other protocols.

For now, we also only succeed if the content at the URI is a bundle
file, not a bundle list. Bundle lists will be implemented in a future
change.

Note that the discovery of a temporary filename is slightly racy because
the odb_mkstemp() relies on the temporary file not existing. With the
current implementation being limited to file copies, we could replace
the copy_file() with copy_fd(). The tricky part comes in future changes
that send the filename to 'git remote-https' and its 'get' capability.
At that point, we need the file descriptor closed _and_ the file
unlinked. If we were to keep the file descriptor open for the sake of
normal file copies, then we would pollute the rest of the code for
little benefit. This is especially the case because we expect that most
bundle URI use will be based on HTTPS instead of file copies.

Reviewed-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Derrick Stolee <derrickstolee@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
bundle-uri.c [new file with mode: 0644]
bundle-uri.h [new file with mode: 0644]
t/t5557-http-get.sh