Subject: [PATCH] reftable: document an alternate cleanup method on Windows

From: "Han-Wen Nienhuys via GitGitGadget" <[email-masked]>
Date: Mon, 12 Apr 2021 19:12:36 +0000

From: Han-Wen Nienhuys <[email-masked]>

The new method uses the update_index counter, which isn't susceptible to clock
inaccuracies.

Signed-off-by: Han-Wen Nienhuys <[email-masked]>
---
    reftable: document an alternate cleanup method on Windows
    
    The new method uses the update_index counter, which isn't susceptible to
    clock inaccuracies.
    
    Signed-off-by: Han-Wen Nienhuys [email-masked]

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1001%2Fhanwen%2Fwindows-2-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1001/hanwen/windows-2-v1
Pull-Request: https://github.com/git/git/pull/1001

 Documentation/technical/reftable.txt | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/Documentation/technical/reftable.txt b/Documentation/technical/reftable.txt
index 3ef169af27d8..d7c3b645cfb0 100644
--- a/Documentation/technical/reftable.txt
+++ b/Documentation/technical/reftable.txt
@@ -1011,8 +1011,13 @@ reftable stack, reload `tables.list`, and delete any tables no longer mentioned
 in `tables.list`.
 
 Irregular program exit may still leave about unused files. In this case, a
-cleanup operation can read `tables.list`, note its modification timestamp, and
-delete any unreferenced `*.ref` files that are older.
+cleanup operation should proceed as follows:
+
+* take a lock `tables.list.lock` to prevent concurrent modifications
+* refresh the reftable stack, by reading `tables.list`
+* for each `*.ref` file, remove it if
+** it is not mentioned in `tables.list`, and
+** its max update_index is not beyond the max update_index of the stack

 Alternatives considered

base-commit: 89b43f80a514aee58b662ad606e6352e03eaeee4
-- 
gitgitgadget