WORKSPACE="$(git rev-parse --show-toplevel)"
我在- 中设置了一个变量~/.bashrc
,它本质上设置$WORKSPACE
为 git 存储库的根目录,以便我可以为某些操作编写别名building an image
,例如going to my component directory in the repo
等。
现在我创建了一个 bash shell 脚本来创建一个具有指定目录名称和分支名称的新 git 工作树。我的脚本语法如下 -
my_script -c <branch_name> -d <directory_name>
现在的挑战是,一旦我创建了一个新的工作树,变量$WORKSPACE
应该设置为新创建的 git 工作树的目录名称。
目前我正在做——
cd $DIR -> which is `directory_name`
WORKSPACE="$(git rev-parse --show-toplevel)"
但这没有帮助,因为 的设置值$WORKSPACE
适用于脚本运行的非交互式会话,而不适用于交互式 bash shell(从其中触发脚本)。因此,如果我触发别名来构建图像,它不会从新创建的工作树目录的上下文中触发。
我该如何解决这个问题?
答案1
在您将获得 git 命令的新值的目录中运行这一行:
git rev-parse --show-toplevel > ~/tmpfile
然后将其添加到您的.bashrc
:
WORKPLACE=$(cat ~/tmpfile)
终于跑了source ~/.bashrc
现在,您可以在文件系统中的任何位置引用 WORKPLACE 以及更新后的值。
tmpfile
您可以轻松管理 的位置,但.bashrc
也请务必指定位置。