From ac02bf25526f5c0b57d58ae3ad668d729981f7a8 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Thu, 5 Sep 2019 15:12:22 +0200 Subject: [PATCH 1/6] fix timing error on branchSelector after redirect to defaultBranch on sourcesView --- scm-ui/src/repos/sources/containers/Sources.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm-ui/src/repos/sources/containers/Sources.js b/scm-ui/src/repos/sources/containers/Sources.js index b12a716d3d..d09e18e5be 100644 --- a/scm-ui/src/repos/sources/containers/Sources.js +++ b/scm-ui/src/repos/sources/containers/Sources.js @@ -85,10 +85,10 @@ class Sources extends React.Component { const defaultBranches = branches.filter(b => b.defaultBranch); if (defaultBranches.length > 0) { - this.setState({ selectedBranch: defaultBranches[0] }); this.props.history.push( `${baseUrl}/${encodeURIComponent(defaultBranches[0].name)}/` ); + this.setState({ selectedBranch: defaultBranches[0] }); } } }; From 0ab8f52e7f6b1bf01c399e3129cf80e7b35b85a6 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Tue, 10 Sep 2019 10:50:56 +0200 Subject: [PATCH 2/6] Check whether directory already exists as a file --- .../sonia/scm/repository/spi/GitModifyCommand.java | 12 ++++++++++-- .../scm/repository/spi/GitModifyCommandTest.java | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java index d03af28e3a..9a8cf7e16a 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java @@ -77,7 +77,7 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman @Override public void create(String toBeCreated, File file, boolean overwrite) throws IOException { Path targetFile = new File(workDir, toBeCreated).toPath(); - Files.createDirectories(targetFile.getParent()); + createDirectories(targetFile); if (overwrite) { Files.move(file.toPath(), targetFile, REPLACE_EXISTING); } else { @@ -97,7 +97,7 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman @Override public void modify(String path, File file) throws IOException { Path targetFile = new File(workDir, path).toPath(); - Files.createDirectories(targetFile.getParent()); + createDirectories(targetFile); if (!targetFile.toFile().exists()) { throw notFound(createFileContext(path)); } @@ -124,6 +124,14 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman } } + private void createDirectories(Path targetFile) throws IOException { + try { + Files.createDirectories(targetFile.getParent()); + } catch (FileAlreadyExistsException e) { + throw alreadyExists(createFileContext(targetFile.toString())); + } + } + private ContextEntry.ContextBuilder createFileContext(String path) { ContextEntry.ContextBuilder contextBuilder = entity("file", path); if (!StringUtils.isEmpty(request.getBranch())) { diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java index 9916272596..0e0447f1fa 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java @@ -111,6 +111,20 @@ public class GitModifyCommandTest extends AbstractGitCommandTestBase { command.execute(request); } + @Test(expected = AlreadyExistsException.class) + public void shouldFailIfPathAlreadyExistsAsAFile() throws IOException { + File newFile = Files.write(temporaryFolder.newFile().toPath(), "new content".getBytes()).toFile(); + + GitModifyCommand command = createCommand(); + + ModifyCommandRequest request = new ModifyCommandRequest(); + request.setCommitMessage("test commit"); + request.addRequest(new ModifyCommandRequest.CreateFileRequest("a.txt/newFile", newFile, false)); + request.setAuthor(new Person("Dirk Gently", "dirk@holistic.det")); + + command.execute(request); + } + @Test public void shouldOverwriteExistingFileIfOverwriteFlagSet() throws IOException, GitAPIException { File newFile = Files.write(temporaryFolder.newFile().toPath(), "new content".getBytes()).toFile(); From 8d203fc2d88f2193ca8b91b62d44c986153ab376 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 10 Sep 2019 12:12:57 +0000 Subject: [PATCH 3/6] Close branch feature/git_modify_command From 66c977b08d080f6ecc53e9696e12989aed7d4371 Mon Sep 17 00:00:00 2001 From: Florian Scholdei Date: Wed, 11 Sep 2019 08:29:34 +0200 Subject: [PATCH 4/6] hide table row right data on mobile sites --- scm-ui/src/repos/sources/components/FileTreeLeaf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm-ui/src/repos/sources/components/FileTreeLeaf.js b/scm-ui/src/repos/sources/components/FileTreeLeaf.js index 2515891de0..2e1a81c0e9 100644 --- a/scm-ui/src/repos/sources/components/FileTreeLeaf.js +++ b/scm-ui/src/repos/sources/components/FileTreeLeaf.js @@ -92,7 +92,7 @@ class FileTreeLeaf extends React.Component { {file.description} {binder.hasExtension("repos.sources.tree.row.right") && ( - + {!file.directory && ( Date: Wed, 11 Sep 2019 10:51:26 +0200 Subject: [PATCH 5/6] Remove leading slashes when changing files in git --- .../scm/repository/spi/GitModifyCommand.java | 17 ++++++++++++++--- .../repository/spi/GitModifyCommandTest.java | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java index 9a8cf7e16a..0f7c9296a7 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitModifyCommand.java @@ -88,7 +88,7 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman } } try { - getClone().add().addFilepattern(toBeCreated).call(); + addFileToGit(toBeCreated); } catch (GitAPIException e) { throwInternalRepositoryException("could not add new file to index", e); } @@ -103,12 +103,16 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman } Files.move(file.toPath(), targetFile, REPLACE_EXISTING); try { - getClone().add().addFilepattern(path).call(); + addFileToGit(path); } catch (GitAPIException e) { throwInternalRepositoryException("could not add new file to index", e); } } + private void addFileToGit(String toBeCreated) throws GitAPIException { + getClone().add().addFilepattern(removeStartingPathSeparators(toBeCreated)).call(); + } + @Override public void delete(String toBeDeleted) throws IOException { Path fileToBeDeleted = new File(workDir, toBeDeleted).toPath(); @@ -118,12 +122,19 @@ public class GitModifyCommand extends AbstractGitCommand implements ModifyComman throw notFound(createFileContext(toBeDeleted)); } try { - getClone().rm().addFilepattern(toBeDeleted).call(); + getClone().rm().addFilepattern(removeStartingPathSeparators(toBeDeleted)).call(); } catch (GitAPIException e) { throwInternalRepositoryException("could not remove file from index", e); } } + private String removeStartingPathSeparators(String path) { + while (path.startsWith(File.separator)) { + path = path.substring(1); + } + return path; + } + private void createDirectories(Path targetFile) throws IOException { try { Files.createDirectories(targetFile.getParent()); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java index 0e0447f1fa..4fbf7eaf02 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommandTest.java @@ -97,6 +97,24 @@ public class GitModifyCommandTest extends AbstractGitCommandTestBase { assertInTree(assertions); } + @Test + public void shouldCreateNewFileWhenPathStartsWithSlash() throws IOException, GitAPIException { + File newFile = Files.write(temporaryFolder.newFile().toPath(), "new content".getBytes()).toFile(); + + GitModifyCommand command = createCommand(); + + ModifyCommandRequest request = new ModifyCommandRequest(); + request.setCommitMessage("test commit"); + request.addRequest(new ModifyCommandRequest.CreateFileRequest("/new_file", newFile, false)); + request.setAuthor(new Person("Dirk Gently", "dirk@holistic.det")); + + command.execute(request); + + TreeAssertions assertions = canonicalTreeParser -> assertThat(canonicalTreeParser.findFile("new_file")).isTrue(); + + assertInTree(assertions); + } + @Test(expected = AlreadyExistsException.class) public void shouldFailIfOverwritingExistingFileWithoutOverwriteFlag() throws IOException { File newFile = Files.write(temporaryFolder.newFile().toPath(), "new content".getBytes()).toFile(); From df78c90510377273a31a6117a70e6fd4af91a4ce Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 11 Sep 2019 11:21:50 +0200 Subject: [PATCH 6/6] Fix german texts in english resource file --- scm-ui/public/locales/en/admin.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scm-ui/public/locales/en/admin.json b/scm-ui/public/locales/en/admin.json index 7c9adff4f9..99febb68fc 100644 --- a/scm-ui/public/locales/en/admin.json +++ b/scm-ui/public/locales/en/admin.json @@ -70,13 +70,13 @@ "submit": "Save" }, "delete": { - "button": "Löschen", - "subtitle": "Berechtigungsrolle löschen", + "button": "Delete", + "subtitle": "Delete permission role", "confirmAlert": { - "title": "Berechtigungsrolle löschen", - "message": "Soll die Berechtigungsrolle wirklich gelöscht werden? Alle Nutzer dieser Rolle verlieren Ihre Berechtigungen.", - "submit": "Ja", - "cancel": "Nein" + "title": "Delete permission role", + "message": "Do you really want to delete this permission role? All users will lose their corresponding permissions.", + "submit": "Yes", + "cancel": "No" } } }