schnappi17 commented on code in PR #2911:
URL: https://github.com/apache/incubator-paimon/pull/2911#discussion_r1515623095


##########
paimon-core/src/main/java/org/apache/paimon/utils/BranchManager.java:
##########
@@ -124,11 +144,114 @@ public void deleteBranch(String branchName) {
             LOG.info(
                     String.format(
                             "Deleting the branch failed due to an exception in 
deleting the directory %s. Please try again.",
-                            getBranchPath(tablePath, branchName)),
+                            getBranchPath(fileIO, tablePath, branchName)),
                     e);
         }
     }
 
+    /** Replace specify branch to main branch. */
+    public void replaceBranch(String branchName) {
+        checkArgument(!StringUtils.isBlank(branchName), "Branch name '%s' is 
blank.", branchName);
+        checkArgument(branchExists(branchName), "Branch name '%s' not 
exists.", branchName);
+        try {
+            // 0. Cache previous tag,snapshot,schema directory.
+            Path tagDirectory = tagManager.tagDirectory();
+            Path snapshotDirectory = snapshotManager.snapshotDirectory();
+            Path schemaDirectory = schemaManager.schemaDirectory();
+            // 1. Calculate and copy the snapshots, tags and schemas which 
should be copied from the
+            // main branch to target branch.
+            calculateCopyMainBranchToTargetBranch(branchName);
+            // 2. Update the Main Branch File to the target branch.
+            updateMainBranchToTargetBranch(branchName);
+            // 3.Drop the previous main branch, including snapshots, tags and 
schemas.
+            dropPreviousMainBranch(tagDirectory, snapshotDirectory, 
schemaDirectory);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /** Calculate copy main branch to target branch. */
+    private void calculateCopyMainBranchToTargetBranch(String branchName) 
throws IOException {
+        TableBranch fromBranch =

Review Comment:
   Here I think you mean the 'toBranch', because it's the target branch, right?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to