Merge "FilesystemDeleteHandler: Use more readable name for trash folder" into stable-2.14
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
index 72bc172..bd63e1f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
@@ -56,9 +56,17 @@
*/
private static final Pattern TRASH_2 = Pattern.compile(".*\\.\\d{13}.%deleted%.git");
+ /**
+ * Newer trash folder name format. Besides the changes in TRASH_2, it uses a timestamp format
+ * (YYYYMMddHHmmss) instead of the epoch one for increased readability.
+ */
+ private static final Pattern TRASH_3 = Pattern.compile(".*\\.\\d{14}.%deleted%.git");
+
@VisibleForTesting
static final boolean match(String fName) {
- return TRASH_1.matcher(fName).matches() || TRASH_2.matcher(fName).matches();
+ return TRASH_1.matcher(fName).matches()
+ || TRASH_2.matcher(fName).matches()
+ || TRASH_3.matcher(fName).matches();
}
static boolean match(Path dir) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandler.java
index ecf14f4..8add19a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/FilesystemDeleteHandler.java
@@ -28,6 +28,8 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryCache;
@@ -36,6 +38,8 @@
public class FilesystemDeleteHandler {
private static final Logger log = LoggerFactory.getLogger(FilesystemDeleteHandler.class);
+ private static final DateTimeFormatter FORMAT =
+ DateTimeFormatter.ofPattern("YYYYMMddHHmmss").withZone(ZoneId.of("UTC"));
private final GitRepositoryManager repoManager;
private final DynamicSet<ProjectDeletedListener> deletedListeners;
@@ -87,7 +91,7 @@
private Path moveToTrash(Path directory, Path basePath, Project.NameKey nameKey)
throws IOException {
Path trashRepo =
- basePath.resolve(nameKey.get() + "." + TimeMachine.now().toEpochMilli() + ".%deleted%.git");
+ basePath.resolve(nameKey.get() + "." + FORMAT.format(TimeMachine.now()) + ".%deleted%.git");
return Files.move(directory, trashRepo, StandardCopyOption.ATOMIC_MOVE);
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
index 6ce8206..102d8d1 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
@@ -30,6 +30,10 @@
matches("a.1234567890123.%deleted%.git");
matches("aa.1234567890123.%deleted%.git");
matches("a.b.c.1234567890123.%deleted%.git");
+
+ matches("a.20181010120101.%deleted%.git");
+ matches("aa.20181010120101.%deleted%.git");
+ matches("a.b.c.20181010120101.%deleted%.git");
}
@Test
@@ -47,10 +51,13 @@
// missing .git suffix
doesNotMatch("a.1234567890123.%deleted%");
+ doesNotMatch("a.20181010120101.%deleted%");
// additional characters after the "git" suffix
doesNotMatch("a.1234567890123.%deleted%.git.");
doesNotMatch("a.1234567890123.%deleted%.git.git");
+ doesNotMatch("a.20181010120101.%deleted%.git.");
+ doesNotMatch("a.20181010120101.%deleted%.git.git");
}
private void matches(String name) {