Skip to main content

Remote

Struct Remote 

Source
pub struct Remote { /* private fields */ }
Expand description

A handle to a git-remote-object-store repository in a cloud backend.

See the module documentation for the on-bucket key layout and usage examples.

Implementations§

Source§

impl Remote

Source

pub async fn connect(url_str: &str) -> Result<Self, RemoteError>

Parse url_str and open a connection to the backing cloud store.

Runs an eager probe (a low-cost listing call) to verify connectivity and surface auth failures early. Requires a Tokio runtime — call this inside #[tokio::main] or an equivalent async context.

§Errors

Returns RemoteError::Url when the URL is not a recognised scheme, and RemoteError::Backend when the backend is unreachable (missing bucket/container, insufficient permissions, invalid credentials).

Source

pub async fn open(url: &RemoteUrl) -> Result<Self, BackendError>

Open a connection from an already-parsed RemoteUrl.

Prefer connect when starting from a string. Use this variant when you need to inspect or route on the URL before connecting.

§Errors

Returns BackendError when the backend is unreachable.

Source

pub fn key(&self, suffix: &str) -> String

Compute the storage key for suffix within this repository’s prefix.

Use this to construct keys for direct store operations.

For a repository at s3+https://bucket/my-repo:

  • remote.key("HEAD")"my-repo/HEAD"
  • remote.key("refs/heads/main/")"my-repo/refs/heads/main/"

For a repository at s3+https://bucket (no prefix):

  • remote.key("HEAD")"HEAD"
Source

pub fn store(&self) -> &dyn ObjectStore

The underlying ObjectStore for direct get/put operations.

Combine with key to target the correct storage path:

let metas = remote.store().list(&remote.key("refs/heads/main/")).await?;
Source

pub fn prefix(&self) -> &str

The repository prefix (empty string for bucket-root repositories).

Source

pub fn engine(&self) -> StorageEngine

The storage engine resolved at open time from the FORMAT key combined with any ?engine= URL parameter.

Callers that target engine-specific APIs (notably crate::packchain::read_blob) inspect this to fail fast against a remote of the wrong shape rather than blindly fetching the engine-specific manifest keys.

Source

pub async fn get_head(&self) -> Result<Bytes, ObjectStoreError>

Read the repository’s HEAD ref.

§Errors

Returns ObjectStoreError::NotFound when no HEAD object exists.

Source

pub async fn put_head(&self, content: Bytes) -> Result<(), ObjectStoreError>

Write the repository’s HEAD ref.

§Errors

Returns ObjectStoreError on backend write failure (auth, network, etc.).

Source

pub async fn list( &self, suffix: &str, ) -> Result<Vec<ObjectMeta>, ObjectStoreError>

List all objects whose storage key starts with <prefix>/<suffix>.

Pass "" to list everything in the repository. Pass "refs/heads/main/" to list all bundles on that branch. Pass "refs/" to list all ref objects.

§Errors

Returns ObjectStoreError on backend list failure (auth, network, etc.).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more