diff options
author | Martin Fick <mfick@nvidia.com> | 2024-11-22 17:08:57 -0800 |
---|---|---|
committer | Martin Fick <mfick@nvidia.com> | 2024-11-22 17:33:41 -0800 |
commit | f026c19a054a5247ddcdf747479be87b7e01152e (patch) | |
tree | f2db093d15b8f4b4007240bf8c382334eb2ef92b /org.eclipse.jgit/src/org/eclipse | |
parent | 079dbe8ed9e47e44986ce43513f3aad8fa64832a (diff) | |
download | jgit-f026c19a054a5247ddcdf747479be87b7e01152e.tar.gz jgit-f026c19a054a5247ddcdf747479be87b7e01152e.zip |
PackDirectory: Filter out tmp GC pack files
git repack passes a ".tmp-XXXX-" prefix to git pack-objects when
repacking. git pack-objects then adds a "pack-XXXXX.pack" to this to
create the name of new packfiles it writes to. PackDirectory was
previously very lenient and would allow these files to be added to its
list of known packfiles. Fix PackDirectory to filter these out since
they are not meant to be consumed yet, and doing so can cause user
facing errors.
Change-Id: I072e57d9522e02049db17d3f4977df7eda14bba7
Signed-off-by: Martin Fick <mfick@nvidia.com>
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java | 2 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java index 8221cff442..51a8148838 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackDirectory.java @@ -545,7 +545,7 @@ class PackDirectory { for (String name : nameList) { try { PackFile pack = new PackFile(directory, name); - if (pack.getPackExt() != null) { + if (pack.getPackExt() != null && !pack.isTmpGCFile()) { Map<PackExt, PackFile> packByExt = packFilesByExtById .get(pack.getId()); if (packByExt == null) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java index 19979d0ed5..c9b05ad025 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java @@ -27,6 +27,7 @@ public class PackFile extends File { private static final long serialVersionUID = 1L; private static final String PREFIX = "pack-"; //$NON-NLS-1$ + private static final String TMP_GC_PREFIX = ".tmp-"; //$NON-NLS-1$ private final String base; // PREFIX + id i.e. // pack-0123456789012345678901234567890123456789 @@ -126,6 +127,13 @@ public class PackFile extends File { } /** + * @return whether the file is a temporary GC file + */ + public boolean isTmpGCFile() { + return id.startsWith(TMP_GC_PREFIX); + } + + /** * Create a new similar PackFile with the given extension instead. * * @param ext |