如何清除化石当前分支的单一签到?

时间:2015-08-20 13:05:48

标签: fossil purge

我正在使用化石作为某种增量备份数据库。到目前为止,除了清除旧条目外,它的效果非常好。 由于这都是自动化的,并且意味着简单,所有签入/回滚都在主干上工作。

现在我尝试添加清除旧签到的选项,但我无法,总是遇到错误消息:

cannot purge the current checkout

也许我正在以错误的方式使用清除,但我无法找到正确的方法。 目前我添加一个标签到我要删除的签到,并尝试清除它们不起作用。从那些签入中删除主干标签没有任何区别。由于化石需要vvar表进行此操作,因此无法在我的本地存储库关闭时运行清除。

我做了一个例子来说明:

D:\_tmp\repo>fossil init test
project-id: d16c0c72d95305884776f5c6e4d440ec687511a3
server-id:  1de96e7234a3e2b6561a31ad0cb9d55243be0bdb
admin-user: usr (initial password is "9dd6fb")

D:\_tmp\repo>fossil open test
project-name: <unnamed>
repository:   D:/_tmp/repo/test
local-root:   D:/_tmp/repo/
config-db:    C:/Users/usr/AppData/Local/_fossil
project-code: d16c0c72d95305884776f5c6e4d440ec687511a3
checkout:     48edad6b8a3a946ad92b96bc41a2911ee709d6b5 2015-08-20 12:54:17 UTC
leaf:         open
tags:         trunk
comment:      initial empty check-in (user: usr)
check-ins:    1

D:\_tmp\repo>fossil addremove
ADDED  closedpurge.txt
added 1 files, deleted 0 files

D:\_tmp\repo>fossil commit -m auto
./closedpurge.txt contains CR/NL line endings. Use --no-warnings or the "crnl-gl
ob" setting to disable this warning.
Commit anyhow (a=all/c=convert/y/N)? a
New_Version: 3ffebd89c0d7e8ac92a21f3a0085568c39e113ea

D:\_tmp\repo>fossil addremove
DELETED  closedpurge.txt
added 0 files, deleted 1 files

D:\_tmp\repo>fossil commit -m auto
New_Version: be0ac15264616ce86f0fce0b8a2de05c80ea3e0b

D:\_tmp\repo>fossil timeline
=== 2015-08-20 ===
12:55:05 [be0ac15264] *CURRENT* auto (user: usr tags: trunk)
12:54:47 [3ffebd89c0] auto (user: usr tags: trunk)
12:54:17 [48edad6b8a] initial empty check-in (user: usr tags: trunk)
+++ no more data (3) +++

D:\_tmp\repo>fossil tag add topurge 3ffebd89c0

D:\_tmp\repo>fossil timeline
=== 2015-08-20 ===
12:56:37 [98c3a4f991] Edit [3ffebd89c0d7e8ac|3ffebd89c0]: Add tag "topurge".
         (user: usr)
12:55:05 [be0ac15264] *CURRENT* auto (user: usr tags: trunk)
12:54:47 [3ffebd89c0] auto (user: usr tags: trunk, topurge)
12:54:17 [48edad6b8a] initial empty check-in (user: usr tags: trunk)
+++ no more data (4) +++

D:\_tmp\repo>fossil purge topurge
cannot purge the current checkout

D:\_tmp\repo>fossil tag cancel trunk 3ffebd89c0

D:\_tmp\repo>fossil timeline
=== 2015-08-20 ===
12:57:30 [21885761c2] Edit [3ffebd89c0d7e8ac|3ffebd89c0]: Cancel tag "trunk".
         (user: usr)
12:56:37 [98c3a4f991] Edit [3ffebd89c0d7e8ac|3ffebd89c0]: Add tag "topurge".
         (user: usr)
12:55:05 [be0ac15264] *CURRENT* auto (user: usr)
12:54:47 [3ffebd89c0] auto (user: usr tags: topurge)
12:54:17 [48edad6b8a] initial empty check-in (user: usr tags: trunk)
+++ no more data (5) +++

D:\_tmp\repo>fossil purge topurge
cannot purge the current checkout

D:\_tmp\repo>fossil close

D:\_tmp\repo>fossil purge topurge -R test
SQLITE_ERROR: no such table: vvar
fossil: no such table: vvar
SELECT value FROM vvar WHERE name='checkout'

我所做的只是初始化一个新的化石库;添加单个文件并提交; rmeove文件并再次提交;并尝试清除添加文件的检查。

编辑:我使用化石版本1.32和1.33

测试了这个

1 个答案:

答案 0 :(得分:2)

错误消息似乎说明了一切,确实:您无法清除当前结帐(在时间轴中标记为*CURRENT*的签到),或其后代之一。来自the help for the purge command(强调我的):

  

移动由TAGS 及其所有后代标识的签到   超出存储库(...)

在执行清除操作之前,解决方案是updatecheckout到不同的签入,不依赖于签入清除