From 4cc1476953f980e798ed9c156a91110d856dfc5f Mon Sep 17 00:00:00 2001 From: Tareq Sharafy Date: Mon, 1 Jun 2015 10:16:22 +0300 Subject: [PATCH] Align the native git status lists with standard git Signed-off-by: Tareq Sharafy --- .../server/nativegit/NativeGitStatusImpl.java | 31 +++++++++---------- .../ext/git/server/nativegit/StatusTest.java | 6 ++-- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/plugin-git/che-plugin-git-ext-git/src/main/java/org/eclipse/che/ide/ext/git/server/nativegit/NativeGitStatusImpl.java b/plugin-git/che-plugin-git-ext-git/src/main/java/org/eclipse/che/ide/ext/git/server/nativegit/NativeGitStatusImpl.java index a88388d25..980bda544 100644 --- a/plugin-git/che-plugin-git-ext-git/src/main/java/org/eclipse/che/ide/ext/git/server/nativegit/NativeGitStatusImpl.java +++ b/plugin-git/che-plugin-git-ext-git/src/main/java/org/eclipse/che/ide/ext/git/server/nativegit/NativeGitStatusImpl.java @@ -259,21 +259,18 @@ public void load() throws GitException { conflicting = new ArrayList<>(); for (String statusLine : statusOutput) { //add conflict files AA, UU, any of U - addIfMatches(conflicting, statusLine, 'A', 'A'); - addIfMatches(conflicting, statusLine, 'U', '*'); - addIfMatches(conflicting, statusLine, '*', 'U'); - //add Added files - addIfMatches(added, statusLine, 'A', 'M'); - addIfMatches(added, statusLine, 'A', ' '); - //add Changed - addIfMatches(changed, statusLine, 'M', '*'); - //add removed - addIfMatches(removed, statusLine, 'D', '*'); - addIfMatches(removed, statusLine, ' ', 'D'); - //add missing - addIfMatches(missing, statusLine, 'A', 'D'); - //add modified - addIfMatches(modified, statusLine, '*', 'M'); + if (!(addIfMatches(conflicting, statusLine, 'A', 'A') // + || addIfMatches(conflicting, statusLine, 'D', 'D') // + || addIfMatches(conflicting, statusLine, 'U', '*') // + || addIfMatches(conflicting, statusLine, '*', 'U'))) { + // Add index-based entries + addIfMatches(added, statusLine, 'A', '*'); + addIfMatches(removed, statusLine, 'D', '*'); + addIfMatches(changed, statusLine, 'M', '*'); + // Add working tree - based entries + addIfMatches(missing, statusLine, '*', 'D'); + addIfMatches(modified, statusLine, '*', 'M'); + } if (statusLine.endsWith("/")) { //add untracked folders addIfMatches(untrackedFolders, statusLine.substring(0, statusLine.length() - 1), '?', '?'); @@ -297,13 +294,15 @@ public void load() throws GitException { * @param y * second template parameter */ - private void addIfMatches(List container, String statusLine, char x, char y) { + private boolean addIfMatches(List container, String statusLine, char x, char y) { if (matches(statusLine, x, y)) { final String filename = statusLine.substring(3); if (!container.contains(filename)) { container.add(filename); } + return true; } + return false; } private boolean matches(String statusLine, char x, char y) { diff --git a/plugin-git/che-plugin-git-ext-git/src/test/java/org/eclipse/che/ide/ext/git/server/nativegit/StatusTest.java b/plugin-git/che-plugin-git-ext-git/src/test/java/org/eclipse/che/ide/ext/git/server/nativegit/StatusTest.java index 3e7648168..512f17893 100644 --- a/plugin-git/che-plugin-git-ext-git/src/test/java/org/eclipse/che/ide/ext/git/server/nativegit/StatusTest.java +++ b/plugin-git/che-plugin-git-ext-git/src/test/java/org/eclipse/che/ide/ext/git/server/nativegit/StatusTest.java @@ -185,7 +185,7 @@ public void testMissing() throws Exception { final Status status = getConnection().status(SHORT); assertEquals(status.getMissing(), asList("a")); - assertTrue(status.getAdded().isEmpty()); + assertEquals(status.getAdded(), asList("a")); assertTrue(status.getChanged().isEmpty()); assertTrue(status.getConflicting().isEmpty()); assertTrue(status.getRemoved().isEmpty()); @@ -206,11 +206,11 @@ public void testRemovedFromFilesSystem() throws Exception { final Status status = getConnection().status(SHORT); - assertEquals(status.getRemoved(), asList("a")); + assertTrue(status.getRemoved().isEmpty()); assertTrue(status.getAdded().isEmpty()); assertTrue(status.getChanged().isEmpty()); assertTrue(status.getConflicting().isEmpty()); - assertTrue(status.getMissing().isEmpty()); + assertEquals(status.getMissing(), asList("a")); assertTrue(status.getUntracked().isEmpty()); assertTrue(status.getUntrackedFolders().isEmpty()); }