如何可靠地运行bash脚本的特定git分支版本?

d5vmydt9  于 2023-03-16  发布在  Git
关注(0)|答案(1)|浏览(138)

我有一个脚本loop.sh,每隔几个小时运行另一个脚本task.sh,它们都是同一个git仓库的一部分。
目前,我在一个单独的screen示例(即它自己的bash进程)中运行

(main) user@computer:repo-dir > ./loop.sh

其中loop.sh类似于:

for i in 1 2 3 4 5 6; do
   ./task.sh
   sleep 3h
done

我最近在VS代码中对task.sh进行了修改,它们被程序自动保存。这使得loop.sh拿起了task.sh的一个坏版本并失败。
如果我从main git分支切换到一个新的new-feature分支来修改task.sh我如何可靠地让loop.sh及其对task.sh的调用使用main版本的文件?
1.一些不太自信的消息人士告诉我,只要在main中运行loop.shtask.sh也会自动成为main
1.一些消息来源相当自信地认为将git checkout main包含在loop.sh中是错误的。这是真的吗?为什么?
1.我见过一个

git show main:task.sh | bash

这个可以作为替换吗?原来的./task.sh接受参数,我有时处理脚本管道的输出。

oug3syen

oug3syen1#

如何可靠地使loop.sh及其对www.example.com的调用task.sh使用文件的主版本?
让脚本在一个单独的worktree中运行,这样你就可以在主工作树中处理new-feature或任何你想要的分支,而不会干扰你的脚本。

cd $HOME/repo-dir
git worktree add -b main.mirror ../scripts-worktree main

并将loop.sh更新为

cd "$HOME/scripts-worktree"
git switch main.mirror

for i in 1 2 3 4 5 6; do
   git merge main
   ./task.sh
   sleep 3h
done

(尽管正如其他人所提到的,从Cron触发它是一个更好的选择)。

相关问题