fork of radicle with Git LFS support, backed by IPFS
Go to file
Alexis Sellier 98ee9c46a9
node: Fix state mismatch between service and wire
Due to never removing peers from the peer map in the wire
protocol module, it was possible for there to be multiple
connected peers with the same Node ID. Some might be in a
"connected" state, while others might be "disconnected".

This caused a bug where a peer, although connected would
be considered disconnected by the wire module, because
when searching for a peer with that Node ID, the disconnected
one would return first.

To fix this, we make sure to remove peers from the map once
the connection is dropped.
2023-03-15 16:46:27 +01:00
.github/workflows ci: Deploy built container images 2023-02-14 20:34:55 +01:00
.nix Rust 1.67 2023-02-04 19:30:29 +01:00
radicle node: Fail fast when repository can't be read 2023-03-15 16:22:43 +01:00
radicle-cli cli: Open tracking DB in read-only mode 2023-03-15 12:59:49 +01:00
radicle-cli-test cli-test: Improve testing framework logging 2023-03-13 11:38:33 +01:00
radicle-cob cob: Use `EntryId` as the operation identifier 2023-03-09 17:08:56 +01:00
radicle-crdt crdt: Implement `GSet` type, based on `GMap` 2023-02-27 17:11:48 +01:00
radicle-crypto cob: Use hashes for operation ids 2023-02-27 17:11:48 +01:00
radicle-dag Rust 1.67 2023-02-04 19:30:29 +01:00
radicle-httpd httpd: Fix status code in commit history endpoint 2023-03-15 10:17:41 +01:00
radicle-node node: Fix state mismatch between service and wire 2023-03-15 16:46:27 +01:00
radicle-remote-helper remote-helper: Tell the user we're announcing refs 2023-03-06 15:39:35 +01:00
radicle-ssh Update to Rust 1.65 2022-11-05 12:47:26 +01:00
radicle-term cli: Update `inquire` crate 2023-03-07 10:39:45 +01:00
radicle-tools cli: Improve `patch` command 2023-03-08 20:23:49 +01:00
.dockerignore Dockerize services 2022-12-14 17:15:40 +01:00
.env.seed Track peers by default on the seed server 2023-03-01 13:00:34 +01:00
.gitignore Initial commit 2022-09-13 10:13:13 +02:00
CONTRIBUTING.md Flesh out `CONTRIBUTING.md` 2023-03-13 15:10:53 +01:00
Cargo.lock node: Move `routing` to `radicle` crate 2023-03-15 12:59:49 +01:00
Cargo.toml Initialize `radicle-term` crate 2023-03-06 10:22:50 +01:00
DCO Add licenses and contributor information 2022-11-16 12:26:12 +01:00
HACKING.md Flesh out `README` 2023-03-13 12:19:20 +01:00
LICENSE-APACHE Add licenses and contributor information 2022-11-16 12:26:12 +01:00
LICENSE-MIT Add licenses and contributor information 2022-11-16 12:26:12 +01:00
README.md Flesh out `README` 2023-03-13 12:19:20 +01:00
build.rs Rust 1.67 2023-02-04 19:30:29 +01:00
docker-compose.yml Track peers by default on the seed server 2023-03-01 13:00:34 +01:00
rust-toolchain Rust 1.67 2023-02-04 19:30:29 +01:00

README.md

❤️🪵

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.