From e95802490ef5f3f3cfc2e845d07e06c75c981ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 21 Sep 2018 09:07:12 +0200 Subject: [PATCH 1/3] new branch --- Jenkinsfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 50a2374544..e737e47ecc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -11,7 +11,8 @@ node() { // No specific label properties([ // Keep only the last 10 build to preserve space - buildDiscarder(logRotator(numToKeepStr: '10')) + buildDiscarder(logRotator(numToKeepStr: '10')), + disableConcurrentBuilds() ]) timeout(activity: true, time: 20, unit: 'MINUTES') { From 11fca51f5fb6af21b9df79ef5a572bf44d5de2e9 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 27 Sep 2018 12:17:36 +0200 Subject: [PATCH 2/3] fix missing checkout/clone description on repository information page --- .../src/main/js/ProtocolInformation.js | 11 ++- .../src/main/js/ProtocolInformation.js | 10 +- .../src/main/js/ProtocolInformation.js | 6 +- .../packages/ui-components/src/index.js | 5 +- .../ui-components/src/repositories.js | 19 ++++ .../ui-components/src/repositories.test.js | 99 +++++++++++++++++++ .../packages/ui-types/src/hal.js | 5 +- 7 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 scm-ui-components/packages/ui-components/src/repositories.js create mode 100644 scm-ui-components/packages/ui-components/src/repositories.test.js diff --git a/scm-plugins/scm-git-plugin/src/main/js/ProtocolInformation.js b/scm-plugins/scm-git-plugin/src/main/js/ProtocolInformation.js index 3c1362ba80..d8eb4ae0e0 100644 --- a/scm-plugins/scm-git-plugin/src/main/js/ProtocolInformation.js +++ b/scm-plugins/scm-git-plugin/src/main/js/ProtocolInformation.js @@ -1,5 +1,6 @@ //@flow import React from "react"; +import { repositories } from "@scm-manager/ui-components"; import type { Repository } from "@scm-manager/ui-types"; type Props = { @@ -10,14 +11,16 @@ class ProtocolInformation extends React.Component { render() { const { repository } = this.props; - if (!repository._links.httpProtocol) { + const href = repositories.getProtocolLinkByType(repository, "http"); + if (!href) { return null; } + return (

Clone the repository

-          git clone {repository._links.httpProtocol.href}
+          git clone {href}
         

Create a new repository

@@ -30,7 +33,7 @@ class ProtocolInformation extends React.Component {
             
git commit -m "added readme"
- git remote add origin {repository._links.httpProtocol.href} + git remote add origin {href}
git push -u origin master
@@ -39,7 +42,7 @@ class ProtocolInformation extends React.Component {

Push an existing repository

           
-            git remote add origin {repository._links.httpProtocol.href}
+            git remote add origin {href}
             
git push -u origin master
diff --git a/scm-plugins/scm-hg-plugin/src/main/js/ProtocolInformation.js b/scm-plugins/scm-hg-plugin/src/main/js/ProtocolInformation.js index 28c1e53a07..03fc41450a 100644 --- a/scm-plugins/scm-hg-plugin/src/main/js/ProtocolInformation.js +++ b/scm-plugins/scm-hg-plugin/src/main/js/ProtocolInformation.js @@ -1,5 +1,6 @@ //@flow import React from "react"; +import { repositories } from "@scm-manager/ui-components"; import type { Repository } from "@scm-manager/ui-types"; type Props = { @@ -10,14 +11,15 @@ class ProtocolInformation extends React.Component { render() { const { repository } = this.props; - if (!repository._links.httpProtocol) { + const href = repositories.getProtocolLinkByType(repository, "http"); + if (!href) { return null; } return (

Clone the repository

-          hg clone {repository._links.httpProtocol.href}
+          hg clone {href}
         

Create a new repository

@@ -26,7 +28,7 @@ class ProtocolInformation extends React.Component {
             
echo "[paths]" > .hg/hgrc
- echo "default = {repository._links.httpProtocol.href}" > .hg/hgrc + echo "default = {href}" > .hg/hgrc
echo "# {repository.name}" > README.md
@@ -44,7 +46,7 @@ class ProtocolInformation extends React.Component { # add the repository url as default to your .hg/hgrc e.g:
- default = {repository._links.httpProtocol.href} + default = {href}
# push to remote repository
diff --git a/scm-plugins/scm-svn-plugin/src/main/js/ProtocolInformation.js b/scm-plugins/scm-svn-plugin/src/main/js/ProtocolInformation.js index ccff4118ba..0ba195887f 100644 --- a/scm-plugins/scm-svn-plugin/src/main/js/ProtocolInformation.js +++ b/scm-plugins/scm-svn-plugin/src/main/js/ProtocolInformation.js @@ -1,5 +1,6 @@ //@flow import React from "react"; +import { repositories } from "@scm-manager/ui-components"; import type { Repository } from "@scm-manager/ui-types"; type Props = { @@ -10,14 +11,15 @@ class ProtocolInformation extends React.Component { render() { const { repository } = this.props; - if (!repository._links.httpProtocol) { + const href = repositories.getProtocolLinkByType(repository, "http"); + if (!href) { return null; } return (

Checkout the repository

-          svn checkout {repository._links.httpProtocol.href}
+          svn checkout {href}
         
); diff --git a/scm-ui-components/packages/ui-components/src/index.js b/scm-ui-components/packages/ui-components/src/index.js index 4865540868..2e1c51b7dc 100644 --- a/scm-ui-components/packages/ui-components/src/index.js +++ b/scm-ui-components/packages/ui-components/src/index.js @@ -2,8 +2,9 @@ import * as validation from "./validation.js"; import * as urls from "./urls"; +import * as repositories from "./repositories.js"; -export { validation, urls }; +export { validation, urls, repositories }; export { default as DateFromNow } from "./DateFromNow.js"; export { default as ErrorNotification } from "./ErrorNotification.js"; @@ -18,6 +19,8 @@ export { default as ProtectedRoute } from "./ProtectedRoute.js"; export { apiClient, NOT_FOUND_ERROR, UNAUTHORIZED_ERROR } from "./apiclient.js"; + + export * from "./buttons"; export * from "./forms"; export * from "./layout"; diff --git a/scm-ui-components/packages/ui-components/src/repositories.js b/scm-ui-components/packages/ui-components/src/repositories.js new file mode 100644 index 0000000000..104cb9a691 --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/repositories.js @@ -0,0 +1,19 @@ +// @flow +import type { Repository } from "@scm-manager/ui-types"; + +// util methods for repositories + +export function getProtocolLinkByType(repository: Repository, type: string) { + let protocols = repository._links.protocol; + if (protocols) { + if (!Array.isArray(protocols)) { + protocols = [protocols]; + } + for (let proto of protocols) { + if (proto.name === type) { + return proto.href; + } + } + } + return null; +} diff --git a/scm-ui-components/packages/ui-components/src/repositories.test.js b/scm-ui-components/packages/ui-components/src/repositories.test.js new file mode 100644 index 0000000000..ccd972ad03 --- /dev/null +++ b/scm-ui-components/packages/ui-components/src/repositories.test.js @@ -0,0 +1,99 @@ +// @flow + +import type { Repository } from "@scm-manager/ui-types"; +import { getProtocolLinkByType, getTypePredicate } from "./repositories"; + +describe("getProtocolLinkByType tests", () => { + + it("should return the http protocol link", () => { + + const repository: Repository = { + namespace: "scm", + name: "core", + type: "git", + _links: { + protocol: [{ + name: "http", + href: "http://scm.scm-manager.org/repo/scm/core" + }] + } + }; + + const link = getProtocolLinkByType(repository, "http"); + expect(link).toBe("http://scm.scm-manager.org/repo/scm/core"); + }); + + it("should return the http protocol link from multiple protocols", () => { + + const repository: Repository = { + namespace: "scm", + name: "core", + type: "git", + _links: { + protocol: [{ + name: "http", + href: "http://scm.scm-manager.org/repo/scm/core" + },{ + name: "ssh", + href: "git@scm.scm-manager.org:scm/core" + }] + } + }; + + const link = getProtocolLinkByType(repository, "http"); + expect(link).toBe("http://scm.scm-manager.org/repo/scm/core"); + }); + + it("should return the http protocol, even if the protocol is a single link", () => { + + const repository: Repository = { + namespace: "scm", + name: "core", + type: "git", + _links: { + protocol: { + name: "http", + href: "http://scm.scm-manager.org/repo/scm/core" + } + } + }; + + const link = getProtocolLinkByType(repository, "http"); + expect(link).toBe("http://scm.scm-manager.org/repo/scm/core"); + }); + + it("should return null, if such a protocol does not exists", () => { + + const repository: Repository = { + namespace: "scm", + name: "core", + type: "git", + _links: { + protocol: [{ + name: "http", + href: "http://scm.scm-manager.org/repo/scm/core" + },{ + name: "ssh", + href: "git@scm.scm-manager.org:scm/core" + }] + } + }; + + const link = getProtocolLinkByType(repository, "awesome"); + expect(link).toBeNull(); + }); + + it("should return null, if no protocols are available", () => { + + const repository: Repository = { + namespace: "scm", + name: "core", + type: "git", + _links: {} + }; + + const link = getProtocolLinkByType(repository, "http"); + expect(link).toBeNull(); + }); + +}); diff --git a/scm-ui-components/packages/ui-types/src/hal.js b/scm-ui-components/packages/ui-types/src/hal.js index ab22203835..248c5e5453 100644 --- a/scm-ui-components/packages/ui-types/src/hal.js +++ b/scm-ui-components/packages/ui-types/src/hal.js @@ -1,9 +1,10 @@ // @flow export type Link = { - href: string + href: string, + name?: string }; -export type Links = { [string]: Link }; +export type Links = { [string]: Link | Link[] }; export type Collection = { _embedded: Object, From 37188dfe6190ebd331be44546f2adb5bd01e873a Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 27 Sep 2018 11:13:21 +0000 Subject: [PATCH 3/3] Close branch feature/disable_concurrent_builds