簡體   English   中英

如何在特定的 git 提交上運行 shell 腳本?

[英]How to run shell script on specific git commit?

我想運行run.sh來檢查我的代碼的結果,這大約需要 30 個小時。 但我迫不及待地想在我的代碼中添加其他功能。 但是,我發現有一些潛在的危險:

在我的例子中,我希望run.sh運行時所有文件都是固定的,同時我繼續編輯 python 文件的更多功能,這些文件可能有錯誤。

例如,這是我的 git 日志

* commit 6d1931c0f5f6f7030f1a93d4f7496527c3711c1f (HEAD -> master)
| Author: deeperlearner
| Date:   Fri Aug 13 10:37:21 2021 +0800
|
|     Version to be run by shell script
|

我如何在繼續提交的同時強制run.sh在提交6d1931上運行?

* commit 059706b752f4702bc5d0c830c87e812a7bbaae27 (HEAD -> master)
| Author: deeperlearner
| Date:   Fri Aug 13 10:38:21 2021 +0800
|
|     Buggy commit that may destroy `run.sh`
|
* commit 6d1931c0f5f6f7030f1a93d4f7496527c3711c1f
| Author: deeperlearner
| Date:   Fri Aug 13 10:37:21 2021 +0800
|
|     Version to be run by shell script
|

我目前有解決方案:使用docker或將整個代碼復制到其他目錄。

但我想知道是否有任何方法可以強制 shell 腳本在特定提交 hash ID 上執行?

這是git worktree非常適合的一個用例。 您基本上是在所需的提交處創建一個新分支,並在該分支處復制工作目錄。 例如,如果您在工作樹的頂層並希望在當前 HEAD 上運行腳本,只需執行以下操作:

$ git worktree add ../bar
Preparing worktree (new branch 'bar')
HEAD is now at b2ceba9 Add d
$ cd ../bar
$ # Run long running script here
$ cd ../foo
$ # Edit files, create new commits, profit

(在這個例子中, foo是 repo 的頂級目錄的名稱。)worktree 有一些選項可以處理特定的提交而不是 HEAD。 詳細閱讀精美手冊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM