oxen.repo

Repo Objects

class Repo()

The Repo class that allows you to interact with your local oxen repo.

Examples

Init, Add, Commit and Push

Adding and committing a file to a remote workspace.

import os
from oxen import Repo

# Initialize the Oxen Repository in a CatsAndDogs directory
directory = "CatsAndDogs"
repo = Repo(directory)
repo.init()
repo.add("images")
repo.commit("Adding all the images")
# Replace <namespace> and <repo_name> with your values
repo.set_remote("origin", "https://hub.oxen.ai/<namespace>/<repo_name>")
repo.push()

__init__

def __init__(path: str = "", mkdir=False)

Create a new Repo object. Use .init() to initialize a new oxen repository, or pass the path to an existing one.

Arguments:

  • path - str Path to the main working directory of your oxen repo.
  • mkdir - bool Whether to create the directory if one doesn’t exist. Default: False

init

def init()

Initializes a new oxen repository at the path specified in the constructor. Will create a .oxen folder to store all the versions and metadata.

clone

def clone(url: str, branch: str = "main", shallow=False, all=False)

Clone repository from a remote url.

Arguments:

  • url - str The url of the remote repository. ex) https://hub.oxen.ai/ox/chatbot
  • branch - str The name of the branch to clone. Default: main
  • shallow - bool Whether to do a shallow clone or not. Default: False
  • all - bool Whether to clone the full commit history or not. Default: False

branches

def branches()

List all branches for a repo

branch

def branch(name: str, delete=False)

checkout

def checkout(revision: str, create=False)

Checkout a branch or commit id.

Arguments:

  • revision - str The name of the branch or commit id to checkout.
  • create - bool Whether to create a new branch if it doesn’t exist. Default: False

add

def add(path: str)

Stage a file or directory to be committed.

add_schema_metadata

def add_schema_metadata(path: str, column_name: str, metadata: str)

Add schema to the local repository

rm

def rm(path: str, recursive=False, staged=False)

Remove a file or directory from being tracked. This will not delete the file or directory.

Arguments:

  • path - str The path to the file or directory to remove.
  • recursive - bool Whether to remove the file or directory recursively. Default: False
  • staged - bool Whether to remove the file or directory from the staging area.
  • Default - False
  • remote - bool Whether to remove the file or directory from a remote workspace.
  • Default - False

status

def status()

Check the status of the repo. Returns a StagedData object.

commit

def commit(message: str)

Commit the staged data in a repo with a message.

Arguments:

  • message - str The commit message.

log

def log()

Get the commit history for a repo.

set_remote

def set_remote(name: str, url: str)

Map a name to a remote url.

Arguments:

push

def push(remote_name: str = "origin",
         branch: str = "main",
         delete: bool = False)

Push data to a remote repo from a local repo.

Arguments:

  • remote_name - str The name of the remote to push to.
  • branch - str The name of the branch to push to.

pull

def pull(remote_name: str = "origin", branch: str = "main", all=False)

Pull data from a remote repo to a local repo.

Arguments:

  • remote_name - str The name of the remote to pull from.
  • branch - str The name of the branch to pull from.
  • all - bool Whether to pull all data from branch history or not. Default: False

path

@property
def path()

Returns the path to the repo.

current_branch

@property
def current_branch()

Returns the current branch.