Fossil SCM - 恢复为Mercurial等特定版本

Tim*_*nce 4 version-control fossil

在使用Mercurial时如果我想用特定的版本更改当前的工作副本我只是这样做:

$> hg revert good_revision
$> hg commit -m "Now I'm in the good revision"
Run Code Online (Sandbox Code Playgroud)

然后我可以看到我的所有文件都处于good_revision状态,并且可以开始处理它.

到目前为止,在化石上我可以做一个还原,但只能在特定的文件,而不是整个存储库,更新或结帐似乎没有像我期望的那样工作.

化石如何将我的整个存储库恢复到某个版本?

kos*_*tix 7

我不确定我是否会遵循,但我认为你想要的是能够在Fossil中创造一个"多个头部在一个分支上"的缝合.如果是,那么Fossil确实支持这个,只是它调用分支的头"离开",这个过程称为"分叉".

要做到这一点,你

fossil update good_revision
Run Code Online (Sandbox Code Playgroud)

然后

fossil commit --allow-fork
Run Code Online (Sandbox Code Playgroud)

您现在可以生成fossil ui,导航到您的分支,看到它有两片叶子.

你现在可以关闭当时的叶子.

请注意,虽然支持,但这似乎不是推荐的做法.相反,Fossil建议采用一种特殊的方法来消除变化:

  1. 将"坏"叶子上的分支重命名为"错误"(或者如果它尚不存在则创建该分支).通过这样做,你有效地"标记"最终的subleaf是一个错误.

    请注意,名称"错误"名称只是一个约定; 这个分支在新创建的存储库中不存在.

  2. 关闭"坏"叶子.

  3. 使用fossil update,继续黑客回到最后状态.

    由于"最后好"提交仍然继承其父提交的分支标记,因此您记录的下一个提交也将继承它,并且不会在分支"错误"上.

举个例子,看看它在SQLite repo中的外观 - 在这个分支上有许多提交的短链提交.另请参见.