mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2026-02-05 13:53:23 +02:00
scripts : add pr2wt.sh (#18644)
* scripts : add pr2wt.sh * script : shebang Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -130,6 +130,7 @@ poetry.toml
|
|||||||
# Local scripts
|
# Local scripts
|
||||||
/run-vim.sh
|
/run-vim.sh
|
||||||
/run-chat.sh
|
/run-chat.sh
|
||||||
|
/run-spec.sh
|
||||||
/.ccache/
|
/.ccache/
|
||||||
|
|
||||||
# IDE
|
# IDE
|
||||||
|
|||||||
65
scripts/pr2wt.sh
Executable file
65
scripts/pr2wt.sh
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# intialize a new worktree from a PR number:
|
||||||
|
#
|
||||||
|
# - creates a new remote using the fork's clone URL
|
||||||
|
# - creates a local branch tracking the remote branch
|
||||||
|
# - creates a new worktree in a parent folder, suffixed with "-pr-${PR}"
|
||||||
|
#
|
||||||
|
# sample usage:
|
||||||
|
# ./scripts/pr2wt.sh 12345
|
||||||
|
# ./scripts/pr2wt.sh 12345 opencode
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "usage: $0 <pr_number> [cmd]"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# check we are in the right directory
|
||||||
|
if [[ ! -f "scripts/pr2wt.sh" ]]; then
|
||||||
|
echo "error: this script must be run from the root of the repository"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $# -lt 1 || $# -gt 2 ]]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
PR=$1
|
||||||
|
[[ "$PR" =~ ^[0-9]+$ ]] || { echo "error: PR number must be numeric"; exit 1; }
|
||||||
|
|
||||||
|
url_origin=$(git config --get remote.origin.url) || {
|
||||||
|
echo "error: no remote named 'origin' in this repository"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
org_repo=$(echo $url_origin | cut -d/ -f4-)
|
||||||
|
|
||||||
|
echo "org/repo: $org_repo"
|
||||||
|
|
||||||
|
meta=$(curl -sSf -H "Accept: application/vnd.github+json" "https://api.github.com/repos/${org_repo}/pulls/${PR}")
|
||||||
|
|
||||||
|
url_remote=$(echo "$meta" | jq -r '.head.repo.clone_url')
|
||||||
|
head_ref=$(echo "$meta" | jq -r '.head.ref')
|
||||||
|
|
||||||
|
echo "url: $url_remote"
|
||||||
|
echo "head_ref: $head_ref"
|
||||||
|
|
||||||
|
git remote rm pr/${PR}
|
||||||
|
git remote add pr/${PR} $url_remote
|
||||||
|
git fetch pr/${PR} $head_ref
|
||||||
|
|
||||||
|
dir=$(basename $(pwd))
|
||||||
|
|
||||||
|
git branch -D pr/$PR 2> /dev/null
|
||||||
|
git worktree add -b pr/$PR ../$dir-pr-$PR pr/$PR/${head_ref} 2> /dev/null
|
||||||
|
|
||||||
|
wt_path=$(cd ../$dir-pr-$PR && pwd)
|
||||||
|
|
||||||
|
echo "git worktree created in $wt_path"
|
||||||
|
|
||||||
|
# if a command was provided, execute it
|
||||||
|
if [[ $# -eq 2 ]]; then
|
||||||
|
cd ../$dir-pr-$PR
|
||||||
|
exec $2
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user