Skip to main content

IssueRef

Enum IssueRef 

Source
pub enum IssueRef {
    GitHub {
        owner: String,
        repo: String,
        number: u64,
    },
    Linear {
        owner: String,
        repo: String,
        id: String,
    },
    AzureDevOps {
        org: String,
        project: String,
        repo: String,
        id: u64,
    },
    Jira {
        host: String,
        issue_key: String,
        owner: String,
        repo: String,
    },
    GitLab {
        owner: String,
        repo: String,
        number: u64,
    },
    Adhoc {
        owner: String,
        repo: String,
        name: String,
    },
    Local {
        project_path: PathBuf,
        display_number: u32,
    },
    RemoteBranch {
        host: String,
        owner: String,
        repo: String,
        branch: String,
    },
}
Expand description

A reference to an issue that identifies a workspace.

Variants§

§

GitHub

A GitHub issue identified by owner, repo, and number.

Fields

§owner: String

GitHub organization or user name.

§repo: String

Repository name.

§number: u64

Issue number.

§

Linear

A Linear issue identified by its UUID, paired with the GitHub repo that hosts the code for that project.

Fields

§owner: String

GitHub organization or user name that hosts the code.

§repo: String

Repository name.

§id: String

Linear issue UUID.

§

AzureDevOps

An Azure DevOps work item paired with an Azure Repos git repository.

Fields

§org: String

Azure DevOps organization name.

§project: String

Azure DevOps project name.

§repo: String

Azure Repos git repository name.

§id: u64

Work item ID.

§

Jira

A Jira issue paired with a GitHub repo that hosts the code.

Fields

§host: String

Jira instance host (e.g. acme.atlassian.net).

§issue_key: String

Jira issue key (e.g. PROJ-42).

§owner: String

GitHub organization or user name that hosts the code.

§repo: String

Repository name.

§

GitLab

A GitLab issue identified by owner, repo, and number.

Fields

§owner: String

GitLab group or user name.

§repo: String

Repository name.

§number: u64

Issue number.

§

Adhoc

A bare repo opened without a specific issue — random branch name.

Fields

§owner: String

GitHub organization or user name.

§repo: String

Repository name.

§name: String

Auto-generated name (e.g. bold_turing).

§

Local

A local Centy issue — the repository itself is the source, no remote clone needed.

Fields

§project_path: PathBuf

Absolute path to the local project repository.

§display_number: u32

Human-readable issue number shown in the branch name.

§

RemoteBranch

A repo detected from the current directory’s git remote — just repo + branch.

Fields

§host: String

Host segment for path routing (e.g. "github", "gitlab").

§owner: String

Organization or user name.

§repo: String

Repository name.

§branch: String

Branch name to use for the worktree.

Implementations§

Source§

impl IssueRef

Source

pub fn workspace_dir_name(&self) -> String

Directory name used inside the bare clone for this worktree.

Source

pub fn branch_name(&self) -> String

Git branch name for this issue worktree.

Source

pub fn clone_url(&self) -> String

HTTPS clone URL for the repository.

§Panics

Always panics for IssueRef::Local — local repos are never cloned.

Source

pub fn multi_dir_name(&self) -> String

Subdirectory name within a multi-workspace root: <repo>-<id>.

For example, GitHub { repo: "backend", number: 7 }"backend-7".

§Panics

Panics for IssueRef::Local — local issues are not supported in multi-workspace mode.

Source§

impl IssueRef

Source

pub fn from_current_repo() -> Result<Self>

Detect the repository from the current working directory.

Reads the origin remote URL and current branch, then creates an Self::RemoteBranch.

§Errors

Returns an error if the current directory is not inside a git repository, has no origin remote, or the remote URL is not a recognised GitHub or GitLab URL.

Source§

impl IssueRef

Source

pub fn parse_with_options(s: &str) -> Result<(Self, DeepLinkOptions)>

Like [parse] but also returns any DeepLinkOptions embedded in a worktree:// URL (e.g. the editor query param).

§Errors

Returns an error if s cannot be parsed as a valid issue reference.

Source§

impl IssueRef

Source

pub fn parse(s: &str) -> Result<Self>

Parse any of the supported input formats:

  • https://github.com/owner/repo/issues/42
  • worktree://open?owner=X&repo=Y&issue=42
  • worktree://open?url=<encoded-github-url>
  • worktree://open?owner=X&repo=Y&linear_id=<uuid>
  • owner/repo#42
  • owner/repo@<linear-uuid>
  • centy:<number> (context-aware: finds nearest .centy/ ancestor)
  • gh:<number> (context-aware: resolves against the origin GitHub remote)
  • owner/repo (ad-hoc: auto-generates a random branch name)
§Errors

Returns an error if s does not match any supported format or if the extracted values (e.g. issue number) are invalid.

Source§

impl IssueRef

Source

pub fn temp_path(&self) -> PathBuf

Path to the worktree checkout.

For Local: ~/worktrees/local/{project_name}/issue-{display_number} For others: ~/worktrees/github/{owner}/{repo}/issue-N

Source

pub fn bare_clone_path(&self) -> PathBuf

Path to the bare clone (or the local repo itself for Local).

§Panics

Panics if the home directory cannot be determined.

Trait Implementations§

Source§

impl Clone for IssueRef

Source§

fn clone(&self) -> IssueRef

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IssueRef

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for IssueRef

Source§

fn eq(&self, other: &IssueRef) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for IssueRef

Source§

impl StructuralPartialEq for IssueRef

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.