ある種の増分バックアップデータベースに化石を使用しています。これまでのところ、古いエントリを消去することを除いて、非常にうまく機能しています。これはすべて自動化されており、単純であることを意図しているため、すべてのチェックイン/ロールバックはトランクで機能します。
ここで、古いチェックインをパージするオプションを追加しようとしましたが、できず、常にエラー メッセージが表示されます。
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'
私がしたことは、新しい化石リポジトリを初期化することだけでした。単一のファイルを追加してコミットします。ファイルを削除して再度コミットします。ファイルを追加したチェックインをパージしてみてください。
編集:化石バージョン1.32および1.33を使用してこれをテストしました