Team Ai
Modelpublic

Felipe97/llama-cpp-compiled

sourceHugging Faceupdated 21d agoView on Hugging Face
0likes1.2kdownloads
pr2wt.sh98 linesDownload Raw Back to scripts
1#!/usr/bin/env bash2 3# initialize a new worktree from a PR number:4#5# - creates a new remote using the fork's clone URL6# - creates a local branch tracking the remote branch7# - creates a new worktree in a parent folder, suffixed with "-pr-$PR"8#9# sample usage:10#   ./scripts/pr2wt.sh 1234511#   ./scripts/pr2wt.sh 12345 opencode12#   ./scripts/pr2wt.sh 12345 "cmake -B build && cmake --build build"13#   ./scripts/pr2wt.sh 12345 "bash -l"14 15function usage() {16    echo "usage: $0 <pr_number> [cmd]"17    exit 118}19 20# check we are in the right directory21if [[ ! -f "scripts/pr2wt.sh" ]]; then22    echo "error: this script must be run from the root of the repository"23    exit 124fi25 26if [[ $# -lt 1 || $# -gt 2 ]]; then27    usage28fi29 30PR=$131[[ "$PR" =~ ^[0-9]+$ ]] || { echo "error: PR number must be numeric"; exit 1; }32 33url_origin=$(git config --get remote.upstream.url 2>/dev/null) || \34url_origin=$(git config --get remote.origin.url) || {35    echo "error: no remote named 'upstream' or 'origin' in this repository"36    exit 137}38 39# Extract org/repo from either https or ssh format.40if [[ $url_origin =~ ^git@ ]]; then41    org_repo=$(echo $url_origin | cut -d: -f2)42else43    org_repo=$(echo $url_origin | cut -d/ -f4-)44fi45org_repo=${org_repo%.git}46 47echo "org/repo: $org_repo"48 49meta=$(curl -sSLf -H "Accept: application/vnd.github+json" "https://api.github.com/repos/$org_repo/pulls/$PR")50 51if [[ $url_origin =~ ^git@ ]]; then52    url_remote=$(echo "$meta" | jq -r '.head.repo.ssh_url')53else54    url_remote=$(echo "$meta" | jq -r '.head.repo.clone_url')55fi56head_ref=$(echo "$meta" | jq -r '.head.ref')57 58echo "url:      $url_remote"59echo "head_ref: $head_ref"60 61url_remote_cur=$(git config --get "remote.pr/$PR.url" 2>/dev/null || true)62 63if [[ "$url_remote_cur" != "$url_remote" ]]; then64    git remote rm  pr/$PR 2> /dev/null65    git remote add pr/$PR "$url_remote"66fi67 68git fetch "pr/$PR" "$head_ref"69 70dir=$(basename $(pwd))71 72git branch -D pr/$PR 2> /dev/null73git worktree add -b pr/$PR ../$dir-pr-$PR pr/$PR/$head_ref 2> /dev/null74 75og_path=$(pwd)76wt_path=$(cd ../$dir-pr-$PR && pwd)77 78echo "git worktree created in $wt_path"79 80cd $wt_path81 82# pi agent setup in the worktree83if [[ -f "$og_path/.pi/SYSTEM.md" && ! -f ".pi/SYSTEM.md" ]]; then84    mkdir -p .pi85    ln -sfn "$og_path/.pi/SYSTEM.md" .pi/SYSTEM.md86fi87 88git branch --set-upstream-to=pr/$PR/$head_ref89git pull   --ff-only || {90    echo "error: failed to pull pr/$PR"91    exit 192}93 94if [[ $# -eq 2 ]]; then95    echo "executing: $2"96    eval "$2"97fi98