如何模仿化石中的'git stash',bzr?

JS_*_*bad 14 bazaar fossil git-stash

使用fossil/bzr时,是否有可能模仿'git stash'的行为?

基本上我对处理以下工作流感兴趣:

  • 在某些时候,源代码树有状态X,它被提交
  • 我继续编写新代码,我写了一段时间,我看到了重构的机会
  • 我不能在这一点上提交,因为我已经开始做的改变没有完成,它还不是原子的
  • 在这一点上,我会做'git stash',将保存当前的工作,并将回到状态X.
  • 我会做重构和提交,源代码现在有状态Y.
  • 我将状态Y中的源代码与stash中的代码合并,完成更改以使其成为原子,然后再次提交,将源代码推送到状态Z

我认为通常可以通过在状态X中分支代码而不是执行'git stash',在该分支中进行重构,然后将分支合并回主分支来使用另一个SCM时模拟这种情况.但我知道分支并不总是便宜的操作.那么有没有更好的特殊方法最终依赖于fossil/bzr的特定功能?

bia*_*lix 27

使用bzr shelvebzr unshelve命令.


vdb*_*oor 12

您可以使用patch系统命令.

  • 首先,通过将生成的diff存储为.patch文件来进行"存储":

    $scmtool diff > working.patch

  • 然后重置您的工作目录.

  • 稍后,将修补程序应用于:

    patch -p1 --dry-run < working.patch

  • 然后这个工作,删除--dry-run以应用真实的补丁.

  • @Randal - 你错过了这一点.vdboor已经将需要隐藏/搁置功能的要求降低到需要SCM中的差异功能.这对任何事情都有效,现在OP的"化石"部分已得到解答. (6认同)

shy*_*kov 8

stash命令最近在化石中实施.你必须查看你将stash在可用命令列表中看到的最新化石可执行文件.

以下是有关其语法Web帮助的链接.