From 67e4c9d6ae3abc01fff031b8231f155a3a6c9efa Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 14:43:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8A=A0=E4=B8=8Advc=20pull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 5 +++++ .../service/impl/NewDatasetServiceImpl.java | 7 +++++-- .../com/ruoyi/platform/utils/DVCUtils.java | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 697ec04f..ec1342ab 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -599,6 +599,8 @@ public class ModelsServiceImpl implements ModelsService { String relatePath = ci4sUsername + "/model/" + gitlinIid + "/" + repositoryName+ "/model"; dvcUtils.gitClone(rootPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); + //干掉目标文件夹 + dvcUtils.deleteDirectory(modelPath); dvcUtils.moveFiles(sourcePath, modelPath); //拼接生产的元数据后写入yaml文件 @@ -701,7 +703,10 @@ public class ModelsServiceImpl implements ModelsService { // 创建本地分支 dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); //dvc checkout + dvcUtils.dvcPull(rootPath); dvcUtils.dvcCheckout(rootPath); + //干掉目标文件夹 + dvcUtils.deleteDirectory(modelPath); dvcUtils.moveFiles(sourcePath, modelPath); //拼接生产的元数据后写入yaml文件 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 48b0033d..4357f395 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -117,7 +117,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { // 命令行操作 git clone 项目地址 dvcUtils.gitClone(localPath, projectUrl, branchName, gitLinkUsername, gitLinkPassword); String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; - + //干掉目标文件夹 + dvcUtils.deleteDirectory(datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath); // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); @@ -188,11 +189,13 @@ public class NewDatasetServiceImpl implements NewDatasetService { dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName); //dvc checkout + dvcUtils.dvcPull(localPath); dvcUtils.dvcCheckout(localPath); // 准备数据 String s3Path = "management-platform-files" + "/" + relatePath + "/" + branchName; - + //干掉目标文件夹 + dvcUtils.deleteDirectory(datasetPath); dvcUtils.moveFiles(sourcePath, datasetPath); // 拼接生产的元数据后写入yaml文件 datasetVo.setCreateBy(String.valueOf(StringUtils.isNotEmpty((String) userInfo.get("nickname")) ? userInfo.get("nickname") : userInfo.get("login"))); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 795a2b0a..52cfa450 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -78,6 +78,26 @@ public class DVCUtils { Files.move(sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING); } + public void deleteDirectory(String dirPath) throws IOException { + Path directory = Paths.get(dirPath); + + // 检查是否目录存在 + if (Files.exists(directory)) { + // 使用Files.walk来删除目录及其内容 + Files.walk(directory) + .sorted((path1, path2) -> path2.compareTo(path1)) // 先删除子文件夹,再删除父文件夹 + .forEach(this::deletePath); + } + } + + private void deletePath(Path path) { + try { + Files.delete(path); + } catch (IOException e) { + log.error("Unable to delete: " + path + " " + e.getMessage()); + } + } + public void gitClone(String localPath, String repoUrl, String branch, String username, String password) throws GitAPIException { CloneCommand cloneCommand = Git.cloneRepository() .setURI(repoUrl) @@ -419,6 +439,7 @@ public class DVCUtils { // 切换分支 gitCheckoutBranch(localPath, branch); + dvcPull(localPath); dvcCheckout(localPath); } From aab43e7bf650aa77f6992e584966d962b00f868b Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 14:52:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=B9=B2=E6=8E=89?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ModelsServiceImpl.java | 2 ++ .../service/impl/NewDatasetServiceImpl.java | 3 ++- .../com/ruoyi/platform/utils/DVCUtils.java | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index ec1342ab..07880e77 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -700,6 +700,8 @@ public class ModelsServiceImpl implements ModelsService { Map stringObjectMap = YamlUtils.loadYamlFile(metaPath + "/" + "metadata.yaml"); ModelMetaVo oldModelVo = ConvertUtil.convertMapToObject(stringObjectMap, ModelMetaVo.class); + //检查是否存在本地重名分支,有的话干掉 + dvcUtils.deleteLocalBranch(rootPath, branchName); // 创建本地分支 dvcUtils.createLocalBranchBasedOnMaster(rootPath, branchName); //dvc checkout diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 4357f395..cd2f20ef 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -184,7 +184,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { //部分信息在前面的版本里面,从那边取过来 Map stringObjectMap = YamlUtils.loadYamlFile(localPath + "/" + "dataset.yaml"); NewDatasetVo newDatasetVo = ConvertUtil.convertMapToObject(stringObjectMap, NewDatasetVo.class); - + //检查是否存在本地重名分支,有的话干掉 + dvcUtils.deleteLocalBranch(localPath, branchName); // 创建本地分支 dvcUtils.createLocalBranchBasedOnMaster(localPath, branchName); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 52cfa450..9f3aef36 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -258,6 +258,33 @@ public class DVCUtils { log.error("Error occurred while creating local branch", e); } } + /** + * 删除本地分支 + * + * @param localPath 本地仓库路径 + * @param branchName 要删除的分支名称 + */ + public void deleteLocalBranch(String localPath, String branchName) throws IOException, GitAPIException { + FileRepositoryBuilder builder = new FileRepositoryBuilder(); + Repository repository = builder.setGitDir(new File(localPath + "/.git")) + .readEnvironment() + .findGitDir() + .build(); + + try (Git git = new Git(repository)) { + // 获取所有本地分支 + for (Ref ref : git.branchList().call()) { + String refName = ref.getName(); + if (refName.endsWith("/" + branchName)) { + // 删除本地分支 + git.branchDelete().setBranchNames(refName).setForce(true).call(); + log.info("Deleted branch: " + branchName); + return; + } + } + log.info("Branch not found: " + branchName); + } + } /** * 基于 master 创建本地分支 From c02df8437eb42ff2846969d2af890fbcdc4615af Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Fri, 20 Sep 2024 15:12:49 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E5=B9=B2=E6=8E=89?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/platform/utils/DVCUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 9f3aef36..e948666e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -601,7 +601,7 @@ public class DVCUtils { // 更新的 dvcPull 方法 public void dvcPull(String localPath) throws Exception { - String command = "dvc pull"; + String command = "dvc pull -v"; runCommand(command, localPath); }