Fintan Halpenny db0ceddf6b node: multistep fetching logic
The previous fetching logic had some pitfalls regarding its logic:

* Fetched 'rad' references could end up not being verifiable and leaving
  the storage in a corrupt state
* Forced pushes would be prohibited, since they would be rejected by
  the client side due to the refspecs being used.

The new approach is to stage a fetch in 2 steps. The first step is to
fetch the relevant `rad/id` and `rad/sigrefs` for verification. For
all remotes that are verified, fetch all references listed in their
respective `rad/sigrefs`, using the `+` marker in the refspec,
allowing to update for any force pushes -- note that this becomes a
safe operation since the `sigrefs` are signed by the remote that
created them.

To prevent unverifiable 'rad' references from polluting storage, all
fetch negotiations are done in a staging repository set up in a
temporary directory. All successful fetches are then transferred,
using the 'file://' protocol, from the temporary directory into the
radicle storage.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
2023-03-31 12:19:36 +01:00
2023-02-04 19:30:29 +01:00
2023-03-31 12:19:36 +01:00
2023-02-04 19:30:29 +01:00
2022-11-05 12:47:26 +01:00
2023-03-08 20:23:49 +01:00
2023-03-21 13:19:38 +01:00
2022-12-14 17:15:40 +01:00
2023-03-16 12:29:35 +01:00
2022-09-13 10:13:13 +02:00
2023-03-16 13:06:38 +01:00
2023-02-04 19:30:29 +01:00
2023-03-20 16:27:42 +01:00
2023-03-20 16:27:42 +01:00
2023-03-13 15:10:53 +01:00
2022-11-16 12:26:12 +01:00
2023-03-16 13:06:38 +01:00
2023-03-13 12:19:20 +01:00
2023-02-04 19:30:29 +01:00

❤️🪵

Radicle Heartwood Protocol & Stack

Heartwood is the third iteration of the Radicle Protocol, a powerful peer-to-peer code collaboration and publishing stack. The repository contains a full implemention of Heartwood, complete with a user-friendly command-line interface (rad) and network daemon (radicle-node).

Radicle was designed to be a secure, decentralized and powerful alternative to code forges such as GitHub and GitLab that preserves user sovereignty and freedom.

Installation

Requirements

  • Linux or Unix based operating system.
  • Git 2.34 or later
  • OpenSSH 9.1 or later with ssh-agent

📦 From source

Requires the Rust toolchain.

You can install the Radicle stack from source, by running the following commands from inside this repository:

cargo install --path radicle-cli --force --locked
cargo install --path radicle-node --force --locked
cargo install --path radicle-remote-helper --force --locked

Or directly from our seed node:

cargo install --force --locked --git https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git \
    radicle-cli radicle-node radicle-remote-helper

Contributing

See CONTRIBUTING.md and HACKING.md for an introduction to contributing to Radicle.

License

Radicle is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

S
Description
Radicle Heartwood Protocol & Stack
Readme
40 MiB
Languages
Rust 97.8%
Shell 0.5%
CUE 0.4%
Nix 0.3%
Just 0.3%
Other 0.6%