可恢复的 bash 会话,带有分支维护

可恢复的 bash 会话,带有分支维护

是否有一个实用程序可以简化 bash 会话的存储和恢复?我希望能够做 EG

$ KUNG=pao
$ foo commit  # saves the current environment
              # as an anonymous changeset from the previous savepoint
$ SCHNICKENS="What's up, doc?"
$ SCHNICKENS="$(echo Schmoove)"
$ unset KUNG
$ foo diff HEAD  # outputs a $(set) of commands
                 # which comprise the current changeset
unset KUNG;
SCHNICKENS="Schmoove"
$ foo branch edit-su-question  # creates a new branch with that name
$ foo merge master  # updates the current environment
                    # with any changes made to ~/.bashrc
                    # since it was branched or last merged
$ function fierce_fist_of_foo {
      cut -f 2 | xargs -I {} bash foo {} '>>' ffof.out;
  }
$ foo checkout master  # switches current branch
                       # to the one checked out by ~/.bashrc
$ foo commit -m "learned the fierce_fist_of_foo technique"
  # new interactive `bash` invocations now load that function

鉴于它与git命令集的相似性,我很想使用一个粗俗的词语,或者 Smashing Pumpkins 专辑名称作为本例中的命令名称。但它很好foo

我对这一概念可行性的信心主要基于这样的假设:set从 bash shell 运行将为您提供一个可调用的脚本,该脚本将恢复该环境。我不确定这是否完全正确。

反正,有没有像这样的东西?如果它确实用作git其实现的一部分,则可以获得额外积分。比如,我会接受这个答案。因为你只是为了积分而已。

答案1

env我确信有人能利用和想出一些东西source

 # "commit"
 env > saved_state

 # "checkout"
 source saved_state

其余一切都是界面糖。甚至可以编写脚本saved_state自动将文件放入某个 git 存储库中,以便使用 进行浏览tig

我必须承认,我对这可能导致的极其混乱和令人困惑的工作流程的可能性感到恐惧。

相关内容