From cab797fd83244025494ba5dfeab047c95a978297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maren=20S=C3=BCwer?= Date: Wed, 12 Dec 2018 15:40:24 +0100 Subject: [PATCH 1/6] show nothing if no diff is there --- .../packages/ui-components/src/repos/LoadingDiff.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js b/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js index 5f6330f0e5..3abf971168 100644 --- a/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js +++ b/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js @@ -52,9 +52,12 @@ class LoadingDiff extends React.Component { const { diff, loading, error } = this.state; if (error) { return ; - } else if (loading || !diff) { + } else if (loading) { return ; - } else { + } else if(!diff){ + return null; + } + else { return ; } } From 3681936e5ced6aa3f4a88d0112deb24b0c2ea7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maren=20S=C3=BCwer?= Date: Wed, 19 Dec 2018 11:30:05 +0100 Subject: [PATCH 2/6] reload diff component if url changes --- .../packages/ui-components/src/repos/LoadingDiff.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js b/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js index 3abf971168..2ebc4a170b 100644 --- a/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js +++ b/scm-ui-components/packages/ui-components/src/repos/LoadingDiff.js @@ -30,6 +30,16 @@ class LoadingDiff extends React.Component { } componentDidMount() { + this.fetchDiff(); + } + + componentDidUpdate(prevProps: Props) { + if(prevProps.url !== this.props.url){ + this.fetchDiff(); + } + } + + fetchDiff = () => { const { url } = this.props; apiClient .get(url) @@ -46,7 +56,7 @@ class LoadingDiff extends React.Component { error }); }); - } + }; render() { const { diff, loading, error } = this.state; From a9300df7f4ed63c6615444db5d5b079b7c37d574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 19 Dec 2018 13:33:57 +0100 Subject: [PATCH 3/6] Fix incoming diff with merges from target branch. Taking the git history example below, the previous version only computed commits 'b3' upward for log of 'b' with ancestor 'master' and missed commits 'b1', 'b2' and the first merge. * 86e9ca0 (HEAD -> b) b5 * d69edb3 Merge branch 'master' into b |\ | * 946a8db (master) f | * b19b9cc e * | 3d6109c b4 * | 6330653 b3 * | a49a28e Merge branch 'master' into b |\ \ | |/ | * 0235584 d | * 20251c5 c * | 5023b85 b2 * | 201ecc1 b1 |/ * 36b19e4 b * c2190a9 a --- .../scm/repository/spi/GitLogCommand.java | 9 +- .../spi/GitLogCommandAncestorTest.java | 102 ++++++++++++++++++ 2 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandAncestorTest.java diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java index 2ea25126cf..a6f74d24eb 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLogCommand.java @@ -205,7 +205,7 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand ObjectId ancestorId = null; if (!Strings.isNullOrEmpty(request.getAncestorChangeset())) { - ancestorId = computeCommonAncestor(request, repository, startId, branch); + ancestorId = repository.resolve(request.getAncestorChangeset()); } revWalk = new RevWalk(repository); @@ -225,16 +225,15 @@ public class GitLogCommand extends AbstractGitCommand implements LogCommand revWalk.markStart(revWalk.lookupCommit(branch.getObjectId())); } + if (ancestorId != null) { + revWalk.markUninteresting(revWalk.lookupCommit(ancestorId)); + } Iterator iterator = revWalk.iterator(); while (iterator.hasNext()) { RevCommit commit = iterator.next(); - if (commit.getId().equals(ancestorId)) { - break; - } - if ((counter >= start) && ((limit < 0) || (counter < start + limit))) { changesetList.add(converter.createChangeset(commit)); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandAncestorTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandAncestorTest.java new file mode 100644 index 0000000000..d36922f941 --- /dev/null +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandAncestorTest.java @@ -0,0 +1,102 @@ + +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.repository.spi; + +import org.junit.Test; +import sonia.scm.repository.ChangesetPagingResult; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * Unit tests for {@link GitLogCommand} with an ancestor commit. This test uses the following git repository: + * + *
+ * * 86e9ca0 (HEAD -> b) b5
+ * *   d69edb3 Merge branch 'master' into b
+ * |\
+ * | * 946a8db (master) f
+ * | * b19b9cc e
+ * * | 3d6109c b4
+ * * | 6330653 b3
+ * * |   a49a28e Merge branch 'master' into b
+ * |\ \
+ * | |/
+ * | * 0235584 d
+ * | * 20251c5 c
+ * * | 5023b85 b2
+ * * | 201ecc1 b1
+ * |/
+ * * 36b19e4 b
+ * * c2190a9 a
+ * 
+ * @author Sebastian Sdorra + */ +public class GitLogCommandAncestorTest extends AbstractGitCommandTestBase +{ + @Override + protected String getZippedRepositoryResource() + { + return "sonia/scm/repository/spi/scm-git-ancestor-test.zip"; + } + + @Test + public void testGetAncestor() + { + LogCommandRequest request = new LogCommandRequest(); + + request.setBranch("b"); + request.setAncestorChangeset("master"); + + ChangesetPagingResult result = createCommand().getChangesets(request); + + assertNotNull(result); + assertEquals(7, result.getTotal()); + assertEquals(7, result.getChangesets().size()); + + assertEquals("86e9ca012202b36865373a63c12ef4f4353506cd", result.getChangesets().get(0).getId()); + assertEquals("d69edb314d07ab20ad626e3101597702d3510b5d", result.getChangesets().get(1).getId()); + assertEquals("3d6109c4c830e91eaf12ac6a331a5fccd670fe3c", result.getChangesets().get(2).getId()); + assertEquals("63306538d06924d6b254f86541c638021c001141", result.getChangesets().get(3).getId()); + assertEquals("a49a28e0beb0ab55f985598d05b8628c2231c9b6", result.getChangesets().get(4).getId()); + assertEquals("5023b850c2077db857593a3c0269329c254a370d", result.getChangesets().get(5).getId()); + assertEquals("201ecc1131e6b99fb0a0fe9dcbc8c044383e1a07", result.getChangesets().get(6).getId()); + } + + private GitLogCommand createCommand() + { + return new GitLogCommand(createContext(), repository); + } +} From 547947a1b3024792d176e0c3e94fe3f05987d80f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Wed, 19 Dec 2018 14:38:29 +0100 Subject: [PATCH 4/6] Add zip for test --- .../repository/spi/scm-git-ancestor-test.zip | Bin 0 -> 20917 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 scm-plugins/scm-git-plugin/src/test/resources/sonia/scm/repository/spi/scm-git-ancestor-test.zip diff --git a/scm-plugins/scm-git-plugin/src/test/resources/sonia/scm/repository/spi/scm-git-ancestor-test.zip b/scm-plugins/scm-git-plugin/src/test/resources/sonia/scm/repository/spi/scm-git-ancestor-test.zip new file mode 100644 index 0000000000000000000000000000000000000000..d740de767439c78f17c58ba9c0df2b34339b8b4c GIT binary patch literal 20917 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 literal 0 HcmV?d00001 From ca54b31c9da01c93a67800505d121e9b94f9ac61 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 20 Dec 2018 09:29:36 +0000 Subject: [PATCH 5/6] Close branch feature/diff_always_loading_when_no_diff From 0eb5bf8117df2ac8be2df78277ed5d1555e2fa0e Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 20 Dec 2018 09:46:43 +0000 Subject: [PATCH 6/6] Close branch bugfix/incoming_diff_with_merge