On Windows, all attempts to clone repositories failed with
Fetch failed for rad:… from z6Mk…: Access is denied. (os error 5)
The reason is that, other than Unix-like systems, it forbids that
directories that are in use are moved.
To improve the situation, take back control over what is moved and
removed exactly by implementing `cleanup` instead of relying
on `impl Drop for tempfile::TempDir`.
A new type `TempRepository` is introduced to capture a repository that can be
used temporarily, and either cleaned up on failure, or moved on success.
This `TempRepository` can be constructed using `Storage::temporary_repository` –
renamed from `Storage::lock_repository` since it is only creating a temporary
resource and not locking it.
In the future (once Rust 1.89 is a little less cutting edge and more
widely available), we may opt for actual locking via
`std::fs::File::lock`.
|
||
|---|---|---|
| .. | ||
| radicle | ||
| radicle-cli | ||
| radicle-cli-test | ||
| radicle-cob | ||
| radicle-crypto | ||
| radicle-dag | ||
| radicle-fetch | ||
| radicle-node | ||
| radicle-protocol | ||
| radicle-remote-helper | ||
| radicle-schemars | ||
| radicle-signals | ||
| radicle-ssh | ||
| radicle-systemd | ||
| radicle-term | ||